[英]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.