ASP.NET Web API 2 - 按查询字符串过滤 POST 请求

ASP.NET Web API 2 - Filter POST requests by Query String

我在 Web 上对 POST 请求执行了 2 个操作-Api 控制器:

[HttpPost]
[Route("api/messages/{retire=retire}")]
public HttpResponseMessage Update(string retire, [FromBody] message m)
{}

[HttpPost]
[Route("api/messages")]
public async Task<HttpResponseMessage> Create()
{}

当我向地址 /api/messages?retire=true 发出 POST 请求时,执行的操作是第二个,而不是我需要执行的第一个。

How can I make requests with query string execute the first action, and request with no query string execute the second one?

如果我删除 api/messages 操作,上述请求可以正常工作。 我考虑过将两者结合起来并使用 if 过滤请求,但我不知道具体怎么做。

提前致谢。

你可以这样做

[HttpPost]
[Route("api/messages")]
public HttpResponseMessage Update(bool retire, [FromBody] message m)
{ 
  if(retire)
   {
       // write the logic of your first endpoint
   }
  else
   {
       // write logic for second
    }
}

最终通过以下语法分隔两个操作解决了问题:

对于 POST /api/messages?retire=true 个请求:

[HttpPost]
[Route("api/messages")]
public async Task<HttpResponseMessage> Update(bool retire, [FromBody] message m)
{}

对于 POST /api/messages 个请求:

[HttpPost]
[Route("api/messages")]
public async Task<HttpResponseMessage> Create()
{