WebAPI

Posted 浩凡儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebAPI相关的知识,希望对你有一定的参考价值。


====》两种网络服务
1.WebService:基于SOAP风格的网络服务,使用方法进行请求
2.WebAPI :基于REST风格的网络服务,使用资源进行请求;5个方法:查一个,查所有,增加,修改,删除就是定义一个控制器继承于WebAPIControler类

 public class UserInfoController : ApiController
    {
        // GET api/userinfo
        public IEnumerable<UserInfo> Get()
        {
            List<UserInfo> lUsers = new List<UserInfo>();
            lUsers.Add(new UserInfo() 
                { 
                    ID=1,
                    Name="孙宝"
                });
            lUsers.Add(new UserInfo() 
            { 
                ID = 2,
                Name = "王沙"
            });
            lUsers.Add(new UserInfo() 
            { 
                ID = 3,
                Name = "王闯" 
            });
            return lUsers;
        }

        // GET api/userinfo/5
        [HttpGet]
        public string Get(int id)
        {
            return "value";
        }

        // POST api/userinfo
        [HttpPost]
        public void Post([FromBody]string value)
        {
        }

        // PUT api/userinfo/5
        [HttpPut]
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/userinfo/5
        [HttpDelete]
        public void Delete(int id)
        {
        }
    }

 


====》使用 1.jquery 的ajax (缺点,不能跨域) 

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script src="Scripts/jquery-1.8.2.min.js"></script>
    <script type="text/javascript">
        $(function () {
            LoadList();
        });

        function LoadList() {
            $.ajax({
                type: get,//请求方式,可以为get post add delete
                data: {},//发送的参数
                url: http://localhost:33587/api/UserInfo, //请求的地址
                contentType: "application/json;charset=utf-8",//数据格式
                dataType: json,  //数据形式
                success: function (list) {
                    var tlist = $("#list");
                    tlist.empty();
                    $.each(list, function (index,item) {
                        tlist.append(<tr><td> + item.ID + </td><td> + item.Name + </td></tr>);
                    });
                }
            });
        }

    </script>
</head>
<body>
    <table border="1">
        <tr>
            <td>编号</td>
            <td>姓名</td>
        </tr>
        <tbody id="list"></tbody>
    </table>

</body>
</html>

2.HttpClient

 HttpClient client = new HttpClient();

            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            //执行Get操作
            HttpResponseMessage response = client.GetAsync("http://localhost:33587/api/UserInfo").Result;

           var lUsers=  response.Content.ReadAsAsync<List<UserInfo>>().Result;

           ViewData.Model = lUsers;

 

请求,由路由规则决定

    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }

 

以上是关于WebAPI的主要内容,如果未能解决你的问题,请参考以下文章

RestFramework

添加 DelegatingHandler 后,WebAPI 2 出现间歇性 CORS 问题

Django REST framework 基本组件

Django REST framework序列化

rest_framework

OData JSON camelCase