zoukankan      html  css  js  c++  java
  • Web API 路由访问设置

    前段时间一直致力于MVC webapi 技术的研究,中途也遇到过好多阻碍,特别是api路由的设置和URL的访问形式,所以针对这个问题,特意做出了记录,以供日后有同样困惑的大虾们借鉴:

    在Mvc WEBAPI中的APP_STARTA文件夹中有一个默认的api路由config文件设置:

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

    从中我们可以看出,api的路由访问是没有对应的action方法名的,默认的访问都是对应的controller的名称。因为api controller都有对应的类型的命名规则,get,post,以及对应的带参数的get,post方法等等,系统会根据URL请求的类型和参数来判别该使用哪个action方法,所以我在项目运行的时候,就感觉不是很方便,当要处理的方法过多,甚至经常会遇到的情况就是,请求类型相同,然后参数也相同的情况,这样系统就有可能很混乱,找不到正确的action方法,得不到我们想要的效果。为此,在适当的情况下,我们可以修改对应的默认路由设置,把路由改为:

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

    通过给默认路由加上一个action,使其能对应到相应的方法名中。

    然后再在前台通过Ajax的方式访问后台对应的action方法:

      function handHandler() {      

         $.ajax({             

       type: 'POST',             

       data: JSON.stringify(document.getElementById("handHandler").value),              

       url: "/api/Test/HandHandler",

        contentType: "application/json",                            

        success: function (results) {

                      alert(results);              

    }          

    });      

    }

    这是一个默认的带参数的提交post类型的访问方式,后台数据代码我就不具体列了。这里特别强调的一个是,get方式访问和post方式访问的一个不同点,当我们执行带参的URL访问的时候,后台对应的get方式的action函数参数可以不需要带[FromBody]的前缀修饰,而post方式的带参数URL需要加上,不然是找不到你想要的action的,如下格式:

    [HttpPost]
            public string HandHandler([FromBody]string requestData)
            {

            }

     这就是Mvc webapi的整个路由的额设置和访问过程。

  • 相关阅读:
    c#可以做什么
    C#是否快被年代所筛选?
    在.NET程序中,C#办法可用来封装代码
    关于程序员的小故事
    码农需了解的代码编写标准
    关于HTML代码的技巧
    分析一波编程语言的前景
    彻底解决Linux索引节点(inode)占用率高的告警
    Python29之字符str与字节bytes
    Python28之文件1
  • 原文地址:https://www.cnblogs.com/syfblog/p/4651355.html
Copyright © 2011-2022 走看看