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的更多相关文章

  1. 2.C#WebAPI设置路由和参数1

    1.当我们创建WebApi的时候我们的项目下的Contorls文件夹下的ValuesController文件下会出现这么几个方法: // GET http://程序ip:程序端口/api/values ...

  2. ASP.NET WebAPI 07 路由

    WebAPI的中路由设计与ASP.NET相似,但又是独立的一套框架. HttpRoute HttpRoute主要提供了路由模板,用于匹配url,生成virtualPath. public interf ...

  3. ASP.NET Web API实践系列04,通过Route等特性设置路由

    ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一 ...

  4. 在 ASP.NET Web API 中,使用 命名空间(namespace) 来作为路由的参数

    这个问题来源于我想在 Web API 中使用相同的控制器名称(Controller)在不同的命名空间下,但是 Web API 的默认 路由(Route) 机制是会忽略命名空间的不同的,如果这样做,会看 ...

  5. linux dhcp 设置路由及主机名

    自动获取ipDHCP方式获取ip:dhclient [网络接口]释放通过DHCP获取的ip地址:dhclient -r [网络接口]查看网络接口 ifconfig -a(列出所有接口含禁用的) eth ...

  6. Vue-详解设置路由导航的两种方法: <router-link :to="..."> 和router.push(...)

    一.<router-link :to="..."> to里的值可以是一个字符串路径,或者一个描述地址的对象.例如: // 字符串 <router-link to= ...

  7. 【转】Vue-详解设置路由导航的两种方法: <router-link :to="..."> 和router.push(...)

    一.<router-link :to="..."> to里的值可以是一个字符串路径,或者一个描述地址的对象.例如: // 字符串 <router-link to= ...

  8. vue - 路由传递参数

    结构目录 1. 页面传值(不同之间的页面传值) 1.1 index.js配置 源码: // 引入vue框架 import Vue from 'vue' // 引入vue-router路由依赖 impo ...

  9. mvc5中webapi的路由

    1.Global.asax中路由的注册 public class WebApiApplication : System.Web.HttpApplication { protected void App ...

随机推荐

  1. bootstrap的datetimepicker.js的结束时间大于开始时间,当前日期之前的代码

    感觉不错的代码,贴出来,以后接着用 <link href="__ROOT__static/css/bootstrap-datetimepicker.min.css " rel ...

  2. javascript的中的new

    考察 ECMAScript 语言规范中 new 运算符的定义: The new Operator The production NewExpression : new NewExpression is ...

  3. MPI 集合通信函数 MPI_Scatterv(),MPI_Gatherv(),MPI_Allgatherv(),MPI_Alltoall(),MPI_Alltoallv(),MPI_Alltoallw()

    ▶ 函数 MPI_Scatterv() 和 MPI_Gatherv() .注意到函数 MPI_Scatter() 和 MPI_Gather() 只能向每个进程发送或接受相同个数的元素,如果希望各进程获 ...

  4. sqlplus 方式连接 远程数据库

    方式一:简易连接,不用进行网络配置,其实就是tnsname.ora文件,但只支持oracle10G以上.命令:sqlplus 用户名/密码@ip地址[:端口]/service_name [as sys ...

  5. 【333】Python3.6 格式化文本

    看如下例子进行体会: min_temperature = 0 max_temperature = 300 step = 20 # \t: A tab print('Fahrenheit\tCelsiu ...

  6. Node.js究竟是什么?

    来源:https://www.ibm.com/developerworks/cn/opensource/os-nodejs/index.html?ca=drs#ibm-pcon   Node 旨在解决 ...

  7. Linux基石【第二篇】虚拟网络三种连接方式(转载)

    在虚拟机上安装完Centos系统后,开始配置静态IP,以方便在本宿主机上可以访问虚拟机,在曲折的配置中,了解到虚拟机还有三种连接方式:Bridged,NAT和Host-only,于是,我又一轮新的各种 ...

  8. 不同包之间的继承extends

    情景如下: 两个类:ExtendsSuper(父类).ExtendsSub(子类) 两个包:父类ExtendsSuper位于包packSuper路径下,子类ExtendsSub位于包packSub路径 ...

  9. JAVA里的CAS算法简析

    Atomic 从JDK5开始, java.util.concurrent包里提供了很多面向并发编程的类. 使用这些类在多核CPU的机器上会有比较好的性能.主要原因是这些类里面大多使用(失败-重试方式的 ...

  10. CMAKE 教程前两章节学习

    原文 https://cmake.org/cmake-tutorial/ 以下是一个循序渐进的教程,它覆盖了CMAKE帮助改进的通常的构建系统的话题.许多话题在<掌握CMAKE>(< ...