.net core webapi中的路由规则
在webapi中,我们通常会创建Restful风格的接口,也就是api地址中只包含控制器的名称,不表明action的名称,然后通过提交请求的方式以及参数来判断要执行该controll中的哪个action。下面我看几个例子.
默认的路由规则
[Route("api/[controller]")]
publicclassMoviesController: Controller {
[HttpGet]
publicIEnumerable < string > Get() {
returnnewstring[] {
"value1",
"value2"
};
}
[HttpPost]
publicvoid Post([FromBody] string value) {
return;
}
}
在上述的几个Acton中,我们主要通过判断请求时get、post、delete还是put以及路径中的参数来匹配对应的action。
- 以Get请求 /api/Movies/ 会匹配第一个action
- 以Post请求 /api/Movies/ 会匹配第二个action
重载URI
如果在一个controll中有两个action的请求方式相同,并且有相同的参数个数,那该如何区分呢,我们可以使用重载URI。即在HttpGet()中给该action指定一个新了访问路径。
[HttpGet("Get1/{id}")]
public int Get1(int id)
{
return 1;
}
[HttpGet("Get2/{id}")]
public int Get2(int id)
{
return 2;
}
上述两个action仅仅有请求方式和参数的个数或类型都无法区分。我们只能在访问路径上作修改。
- api/Index/Get1/3 会匹配第一个
- api/Index/Get2/3 会匹配第二个