mvc4 webapi里一个controller对应多个post方法

在asp.net mvc 4里,webapi中,正常情况下,一个控制器只能有一个post方法,但是想要用多个呢,怎么办,要是mvc5就好了,只需加个注解就行了,可是在mvc4里,就只能改变路由规则了,

原路由如下

 config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

 改变后

config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

这样就OK了,下面来测试

 

post1:

<script>
    $(function () {
        $.ajax({
            url: "http://localhost:33953/api/values/post1",
            data: {"": "qqq" },
            type: "post",
            success: function (data) {

            }
        });
    })
</script>

post2

<script>
    $(function () {
        $.ajax({
            url: "http://localhost:33953/api/values/post2",
            data: {"": "qqq" },
            type: "post",
            success: function (data) {

            }
        });
    })
</script>

  尽管post1和post2里的方法参数不一样,其实没关系的,对于Frombody来说,""=value,没有key,对于value的话,更好说了,无论你的参数起什么名字,最后传进来的都是前端定义好的value,哈哈

 

post3

<script>
    $(function () {
        $.ajax({
            url: "http://localhost:33953/api/values/post3",           
            type: "post",
            contentType: "application/json",
            data: JSON.stringify({ Id: "009", Name: "school", Age: 26 }),
            success: function (data) {

            }
        });
    })
</script>

一切正常,ok

总结:其实对于这种基于 action 的post来说其实挺好用的,它摆脱了想get时要传递不同参数(个数|类型|名称)的参数问题,只要post方法名不一样,参数随便来,很灵活,再补充一下,改了路由规则后,原来的get的路由就不适用了,有没有原来get规则不变,而同时并存多个post方法的解决办法呢,只能以后求高人解答了。

 

 

补充:get方式其实也特好用

对于第一种:http://localhost:33953/api/values?id=123   或者http://localhost:33953/api/values/123

 

对于第二种:http://localhost:33953/api/values?name=123

 

对于第三种:http://localhost:33953/api/values?group=asd

其实对于第二种和第三种的比较,你会发现,其实这种方式已经打破了 路由规则了,通过参数名的形式,可以做到在一个controller里共存多个get方法,写起来随心所欲,还是比较好用的。

超级简单好用,哈哈

posted on 2018-02-05 22:03  奔游浪子  阅读(2341)  评论(0)    收藏  举报

导航