zoukankan      html  css  js  c++  java
  • asp.net webapi 使用小结

    一星期前公司用webapi处理一些事情,自己总结一下用法。

    1.创建一个空的webapi会默认有一下几个方法。

        public class ValueController : ApiController
        {
            // GET api/value
            public IEnumerable<string> Get()
            {
    
                return new string[] { "value1", "value2" };
            }
    
            // GET api/value/5
            public string Get(int id)
            {
    
                return "value";
            }
    
            // POST api/value
            public void Post([FromBody]string value)
            {
    
            }
    
            // PUT api/value/5
            public void Put(int id, [FromBody]string value)
            {
    
            }
    
            // DELETE api/value/5
            public void Delete(int id)
            {
    
            }
        }

    第一个IEnumerable<string> Get()

          $.ajax({
                url: "/api/value",
                type: "get",
                success: function (data) {
                    alert(data);
                }
            });

    第二个 string Get(int id)

        $.ajax({
                url: "/api/value/1",
                type: "get",
                success: function (data) {
                    alert(data);
                }
            });
    

    第三个 void Post([FromBody]string value) ,调用的时候比较特殊,我在data前面的键值给空的时候才能把值传输到后台去。

        $.ajax({
                url: "/api/value",
                type: "post",
                data: { '': "test" },
                success: function (data) {
                    //alert(data);
                }
            });

    或者改造后台接收方法。用实体来接收值,可以接收到。

            public class PostModel 
            {
                public string value { get; set; }
            }
            public string Post([FromBody]PostModel value)
            {
                return "ok";
            }
            $.ajax({
                url: "/api/value",
                type: "post",
                data: { 'value': "test" },
                success: function (data) {
                    //alert(data);
                }
            });

    第四个 string Put(int id, [FromBody]PostModel value) 调用的时候,id必须包含在路径中,才能获取到。放在接收的实体中也是没用的。

        $.ajax({
                url: "/api/value/1",
                type: "Put",
                data: { 'value': "test" },
                success: function (data) {
                    //alert(data);
                }
            });

    第五个 string Delete(int id) 调用跟第一个唯一的区别需要标明type:“Delete”

    这是默认的几种使用方法,但是自己使用的时候感觉约束蛮多。然后我把它们全删了。

    用法上不规范,但是用起来感觉比较舒服,感觉代码还是怎么写起来舒服怎么来吧,自己在api路由这里加了一项{action}这样用起来看着跟mvc区别不大。

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

     代码就可以这样写了。

        public class ValueController : ApiController
        {
    
            public List<string> GetList()
            {
    
                return new List<String> { "value1", "value2" };
            }
    
            public List<string> GetTestList()
            {
    
                return new List<String> { "value1", "value2" };
            }
    
        }
           $.ajax({
                url: "/api/value/GetTestList",
                type:"post",
                success: function (data) {
                    
                }
            });

    对于webapi传参数,默认的都是从路径里提取的也就是get方式的传参。

         public List<string> GetList(string id,string name)
            {
    
                return new List<String> { "value1", "value2" };
            }
        $.ajax({
                url: "/api/value/GetList",
                type: "get",
                data: { "id": "1", "name": "三" }, success: function (data) { } });
    
    
        $.ajax({
                url: "/api/value/GetList?id=1&name=三",
                type: "get",
                success: function (data) {
                    
                }
            });
     

    如果需要传的字符串参数很多,get方式会报错,可以用post方式,这里需要注意的是不能用get开头,要么它只认get提交

        public class PostModel
        {
            public string value { get; set; }
            public string id{ get; set; }
        }
    
            public List<string> List([FromBody]PostModel value)
            {
    
                return new List<String> { "value1", "value2" };
            }
        $.ajax({
                url: "/api/value/List",
                type: "post",
                data: { "id": "1", "value": "01234567890123456789012345678901234567890123456789" },
                success: function (data) {
                    
                }
            });
  • 相关阅读:
    前端性能优化(2.1 代码分离——入口起点 entry point)
    前端性能优化(prefetch, preload, dns-prefetch, defer, async)
    Golang-函数
    Golang复合类型-map
    Golang复合类型-切片
    Golang复合类型-数组
    Golang基础语法-goto语句
    Golang基础语法-跳出循环
    vueRouter学习笔记
    通过ES6实现个模板操作
  • 原文地址:https://www.cnblogs.com/ariklee/p/3900189.html
Copyright © 2011-2022 走看看