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 == "" && model.password == "")
{
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.路由设置的话根据项目情况设置,适合的才是好的,切记不要搞得太乱。
3.C#WebAPI设置路由和参数2的更多相关文章
- 2.C#WebAPI设置路由和参数1
1.当我们创建WebApi的时候我们的项目下的Contorls文件夹下的ValuesController文件下会出现这么几个方法: // GET http://程序ip:程序端口/api/values ...
- ASP.NET WebAPI 07 路由
WebAPI的中路由设计与ASP.NET相似,但又是独立的一套框架. HttpRoute HttpRoute主要提供了路由模板,用于匹配url,生成virtualPath. public interf ...
- ASP.NET Web API实践系列04,通过Route等特性设置路由
ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一 ...
- 在 ASP.NET Web API 中,使用 命名空间(namespace) 来作为路由的参数
这个问题来源于我想在 Web API 中使用相同的控制器名称(Controller)在不同的命名空间下,但是 Web API 的默认 路由(Route) 机制是会忽略命名空间的不同的,如果这样做,会看 ...
- linux dhcp 设置路由及主机名
自动获取ipDHCP方式获取ip:dhclient [网络接口]释放通过DHCP获取的ip地址:dhclient -r [网络接口]查看网络接口 ifconfig -a(列出所有接口含禁用的) eth ...
- Vue-详解设置路由导航的两种方法: <router-link :to="..."> 和router.push(...)
一.<router-link :to="..."> to里的值可以是一个字符串路径,或者一个描述地址的对象.例如: // 字符串 <router-link to= ...
- 【转】Vue-详解设置路由导航的两种方法: <router-link :to="..."> 和router.push(...)
一.<router-link :to="..."> to里的值可以是一个字符串路径,或者一个描述地址的对象.例如: // 字符串 <router-link to= ...
- vue - 路由传递参数
结构目录 1. 页面传值(不同之间的页面传值) 1.1 index.js配置 源码: // 引入vue框架 import Vue from 'vue' // 引入vue-router路由依赖 impo ...
- mvc5中webapi的路由
1.Global.asax中路由的注册 public class WebApiApplication : System.Web.HttpApplication { protected void App ...
随机推荐
- 关于memcache分布式一致性hash
consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛: 1 ...
- delphi 实体类 JSON 数组
delphi 实体类 与JSON转换,序列化 TJson REST.JSON.pas TJson.JsonToObjectTJson.ObjectToJsonString JsonEncode O ...
- Java 目标
Java 技术 其次掌握的技能树主要有三个方面:第一个是基础,比如对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计.比如一般面试都会问Co ...
- 改成maven工程
configure->convert to Maven Project
- C语言高级程序设计——进制算法以及位算符号
语言不够官方:意会: 数据储存运算是以二进制的,二进制数有原码 反码 补码三种.通常所说的二进制就是原码.(语言不官方) 原码 :4的原码可以为:0000 0100:最高位0 可以为符号数 反码:正数 ...
- Qt5 How to translate App UI languages
Adding new language file name in app.pro file. TRANSLATIONS += lg_ch.ts \ lg_en.ts \ lg_new.ts Runni ...
- Eigen库和STL容器冲突问题
博客参考:https://blog.csdn.net/huajun998/article/details/54311561 在程序中想使用类似于如下的容器 std::vector<Eigne:: ...
- Illegal mix of collations for operation 'like' while searching with Ignited-Datatables
Stack Overflow Questions Developer Jobs Tags Users Log In Sign Up Join Stack Overflow to learn, sh ...
- entity_class实体类
对应数据库中表,并继承基础模型类~
- 关于自动ui的多个处理我的解决方案, 不知道大家怎么处理
( pathpp ="D:\\pyc-tools\\ms\\newdate\\maxinfo" DialogMonitorOPS.unRegisterNotification id ...