繁体   English   中英

如何覆盖 ASP.NETCORE 路由?

[英]How to override ASP.NETCORE route?

如何使用参数路由?
我的项目使用.Net 6.0
喜欢:
https://localhost:7203/v1/users/123/items?action=delete

https://localhost:7203/v1/users/123/items?action=claim

我想使用代码

[HttpPost]
[Route("/v1/users/{userId}/items")]
public void Delete(string userId)
{
   //TODO...
}

[HttpPost]
[Route("/v1/users/{userId}/items")]
public void Claim(string userId)
{
   //TODO...
}
[HttpPost("/v1/users/{userId}/items")]
public void PerformUserItemAction([FromRoute] string userId, [FromQuery] string action)
{
   if (action == "delete")
   {
      //...perform delete
   }
   else if (action == "claim")
   {
     //...perform claim action
   }
}

如果您确实需要使用POST执行删除操作
那么你的参数名称必须与动作的参数相同
例子:
如果你的 uri 是https://localhost:7203/v1/users/123/items?action=delete

[HttpPost]
[Route("/v1/users/{userId}/items")]
public void Delete([FromRoute]string userId, string action)
{
   // Use your action string to decide action 
}

但是最好为您的删除操作指定 httpDelete

就像许廷欢说的。 使用正确的 HttpRequestMethods (如[HttpDelete]进行删除操作可能会更好。 但如果你真的需要像你说的那样做,试试这个:

[Route("/v1/users/{userId}/items?action=claim")]

[Route("/v1/users/{userId}/items?action=delete")]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM