繁体   English   中英

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

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

对于Web-Api控制器上的POST请求,我有2个操作:

[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请求时,执行的动作是第二个动作,而不是第一个动作,即我需要执行的动作。

如何使带有查询字符串的请求执行第一个操作,而没有查询字符串的请求执行第二个操作?

如果我删除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()
{

暂无
暂无

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

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