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()
{
我在 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()
{