asp.net-core - 通过 httpVerb 属性和“Route”属性进行路由会导致不同的路由吗?
问题描述
我有简单的客户控制器(asp net core 3.0),如下所示:
[ApiController]
[Route("api/v1.0/{controller}")]
public class CustomerController : Controller
{
}
{id}
通过[HttpGet]
or设置路由令牌有什么区别[Route(...)]
,例如:
[HttpGet]
[Route("{id}")]
public async Task<IActionResult> GetAsync(string id)
{
. . .
}
[HttpGet("{id}")]
public async Task<IActionResult> GetAsync(string id)
{
. . .
}
他们会解决类似的路线: api/v1.0/{controller}/{id}
?
解决方案
这应该是相同的,来自文档:
属性路由也可以使用 Http[Verb] 属性,例如 HttpPostAttribute。所有这些属性都可以接受一个路由模板。
如果[Route(...)]
在操作方法上使用,该操作将接受所有 HTTP 方法。所以建议Http*Verb*Attributes
在 rest api 中使用更具体的:
在构建 REST API 时,您很少会希望在操作方法上使用 [Route(...)],因为该操作将接受所有 HTTP 方法。最好使用更具体的 Http动词属性来准确了解您的 API 支持什么。REST API 的客户端应该知道哪些路径和 HTTP 动词映射到特定的逻辑操作。
推荐阅读
- checkbox - 复选框角材质修改样式,不使用(已弃用)/deep/、>>> 和 ::ng-deep
- java - 如何同时使用相机预览和手电筒?
- java - 带有 Java RESTl 服务的 Nginx
- html - 仅在 IOS 上的按钮错误
- jquery - 单日里程碑甘特图
- dynamics-crm - 更改派对列表中 +New 按钮的行为
- spring - 使用 Mockito 测试 @ConfigurationProperties
- python - JSON转储格式化python
- jmeter - / 之后的字符在 JMeter 5.1.1 的 HTTP Header Manager 中被视为注释
- c# - 从受密码保护的 Http 目录播放音频文件