博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web API 路由访问设置
阅读量:6705 次
发布时间:2019-06-25

本文共 1336 字,大约阅读时间需要 4 分钟。

前段时间一直致力于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的整个路由的额设置和访问过程。

转载于:https://www.cnblogs.com/syfblog/p/4651355.html

你可能感兴趣的文章
如何浏览github上所有的公开的项目?
查看>>
WebSocket在Asp.Net中的例子
查看>>
C#------发送邮件
查看>>
[转]vue全面介绍--全家桶、项目实例
查看>>
开源一个简易轻量的reactor网络框架
查看>>
Hive metastore源码阅读(一)
查看>>
上机题目(0基础)- Java网络操作-打印网页(Java)
查看>>
MySQL 查看用户授予的权限
查看>>
JS设置cookie、读取cookie、删除cookie
查看>>
webpack 通用模块(每个页面都用到的js)编译
查看>>
python进行数据分析------相关分析
查看>>
Python数据分析(二): Numpy技巧 (4/4)
查看>>
菜鸟学Struts——I18N对国际化的支持
查看>>
LAMP架构介绍MySQL、MariaDB介绍 MySQL安装
查看>>
Spark读取文件
查看>>
uiautomator2 使用Python测试 Android应用
查看>>
mysql建表以及列属性
查看>>
【转】IT业给世界带来的危机
查看>>
UWP Composition API - GroupListView(一)
查看>>
python模块和类的通用转换规则(2),三步转oo
查看>>