3.C#WebAPI设置路由和参数2
1.上面已经教大家如何修改全局路由了,那么修改完后我们在post请求的要这样使用,其中model模型我就默认你应该已经建好了,没有创建的话请看上一部分
Post方法的参数,如果提交的请求体需要是phoneNum=123&password=123这样的格式。如果用string AddNew(string phoneNum, string password)这种普通参数会有很多的坑(参考《C#进阶系列—— WebApi 接口参数不再困惑:传参详解》),所以不要用。都用模型对象,public string AddNew2(LoginModel model),也可以参数标注[FromBody]:public string AddNew2([FromBody]LoginModel model)。(只能有一个参数标注FromBody)。
[HttpPost] public bool Login4(LoginModel model)//也可以参数标注[FromBody]LoginModel model { if (model.phoneNum == "123" && model.password == "123") { return true; } else { return false; } }
2.通过自定义路由规则来捕获参数
WebAPI可以通过[Route]和[RoutePrefix]来自定义路由,[RoutePrefix]作用于Controller,[Route]作 用于Action,一旦一个Controller或者Action设置了[Route]、[RoutePrefix]那么设置的routeTemplate讲在 这个Controller或者Action中就不起作用了。
(1)[Route]自定义路由
[Route("Login/{phoneNum}/{password}")] [HttpGet] public string Login5(string phoneNum, string password) { return string.Format("Login5-->phoneNum:{0},password:{1}", phoneNum, password); }
(2)每个方法都[Route]自定义太麻烦,[RoutePrefix]作用于Controller适用内部所有方法
//当然每个Action都设定api/Login很麻烦,可以在Controller上标注[RoutePrefix("api/Login")](路径不能以/结尾) [RoutePrefix("api/Login")] public class LoginController : ApiController { [HttpGet] public string LoginAction(string phoneNum, string password) { return string.Format("Login-->phoneNum:{0},password:{1}", phoneNum, password); } }
总结:
1.如果使用 Post 请求,那么就需要每个方法都声明一个参数对应的类,参数前可标注[FromBody]。
2.如果使用 Get 请求,那么参数比较自由,但是需要注意防范缓存(使用 ajax 的话加上一个当前时间或者 随机数的参数,使用 HttpClient 等需要禁用缓存)。
3.如果用 Get 方式,参数既可以用普通参数也可以用模型类参数,需要注意防止缓存;如 果 用 Post 方 式 , 参 数 一 定 要 用 模 型 类 , 客 户 端 既 可 以 用 ContentType=” application/x-www-form-urlencoded”提交表单,也可以用 ContentType=”application/json”提交。
4.路由设置的话根据项目情况设置,适合的才是好的,切记不要搞得太乱。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
VueJS && ReactJS 如何?听听别人怎么说。
使用所有新的库和框架,很难跟上所有这些库和框架,也就是说,这就需要您决定哪些是值得花时间的。 让我们看看人们说什么: “和Vue.JS一起工作是很愉快的,我发现学习曲线很浅,然而,这纯粹是基于我的经验,如前所述,我过去曾和一些人一起工作过。 默认的模板结构工作原理和Angular非常类似,所以有这个背景的开发人员可能会React上手更快。如果React像Vue.js那么容易学习的话,我真的不会不学习React,它的影响很大。 Reme Le Hane “比起React我更喜欢vue.js。在JavaScript领域vue.js是镇上新来的小子。所以我想说学习的简单性可能是第一。简洁是设计的基础。 Vue是简单的,它具有很多从Angular1和react来的概念。你可以使用它来建立任何系统 - 只是把它包含到HTML文件中。 React更大,更复杂一点(例如在设置方面)。 所以如果你想只想学一个框架,并且没有一个已经建立的系统那就选择Vue。vue.js很平易近人,提供如何把各种事情做好的更多的结构。如果你还不确定,两者都试试。也可以点击这里来阅读,ReactJS vs Vue.js v...
- 下一篇
如何用云端 GPU 为你的 Python 深度学习加速?
负荷 下午,我用 Python 深度学习框架 Keras 训练了一个包含3层神经网络的回归模型,预测波士顿地区房价。 这是来自于 “Deep Learning with Python” 书上的一个例子。 运行的时候,代码有两个大循环。 第一个把数据跑100遍(epochs),第二个把数据跑500遍。 我的笔记本电脑算起来很吃力,风扇一直在响。 大热天的,看着好可怜。 用笔记本电脑进行机器学习,还是不大合适的。 我要是有一块 GPU 就好了…… 此时,突发奇想。 我虽然没有带 nVidia GPU 的设备,不过谁说非要在本地机器运行代码了? 早已是云时代了啊! 能否用云端 GPU 跑机器学习代码,让我的笔记本少花些力气呢? 偶遇 有这个想法,是因为最近在 Youtube 上面,我看到了 Siraj Raval 的一段新视频。 这段视频里,他推荐了云端 GPU 提供平台 FloydHub。 我曾经试过 AWS GPU 产品。 那是在一门深度学习网课上。 授课老师跟 AWS 合作,为全体学生免费提供若干小时的 AWS 计算能力,以便大家顺利完成练习和作业。 我记得那么清楚,是因为光如何配置 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装