WebAPI .NET - POST 按参数请求过滤器
WebAPI .NET - POST request filter by parameters
我使用 POST 创建 消息 并更新它们(我需要使用 POST,而不是 PUT)。 API 有以下说明:
POST /api/message
POST /api/message?update_message
如何区分两者?猜猜我必须在函数中做一个 if
:
[HttpPost]
[Route("api/message")]
public async Task<HttpResponseMessage> Handle()
{}
检查请求是否包含参数update_message。
知道如何解决这个问题吗?谢谢。
一个查询字符串参数有一个键和一个值。您应该向 "update_message" 参数添加一个值,并使用它来决定是创建还是更新消息。
在路由属性中,您可以定义查询字符串参数。
[HttpPost, Route("api/message/{update_message=update_message}")]
public async Task<HttpResponseMessage> Handle(string update_message)
{
if(string.Equals("true", update_message)
{
// update
}
else
{
//create
}
}
最终通过以下语法分隔两个操作解决了问题:
对于 POST /api/message?update_message=true
个请求:
[HttpPost]
[Route("api/message")]
public async Task<HttpResponseMessage> Update(bool update_message, [FromBody] message m)
{}
对于 POST /api/message
个请求:
[HttpPost]
[Route("api/message")]
public async Task<HttpResponseMessage> Create()
{}
我使用 POST 创建 消息 并更新它们(我需要使用 POST,而不是 PUT)。 API 有以下说明:
POST /api/message
POST /api/message?update_message
如何区分两者?猜猜我必须在函数中做一个 if
:
[HttpPost]
[Route("api/message")]
public async Task<HttpResponseMessage> Handle()
{}
检查请求是否包含参数update_message。
知道如何解决这个问题吗?谢谢。
一个查询字符串参数有一个键和一个值。您应该向 "update_message" 参数添加一个值,并使用它来决定是创建还是更新消息。 在路由属性中,您可以定义查询字符串参数。
[HttpPost, Route("api/message/{update_message=update_message}")]
public async Task<HttpResponseMessage> Handle(string update_message)
{
if(string.Equals("true", update_message)
{
// update
}
else
{
//create
}
}
最终通过以下语法分隔两个操作解决了问题:
对于 POST /api/message?update_message=true
个请求:
[HttpPost]
[Route("api/message")]
public async Task<HttpResponseMessage> Update(bool update_message, [FromBody] message m)
{}
对于 POST /api/message
个请求:
[HttpPost]
[Route("api/message")]
public async Task<HttpResponseMessage> Create()
{}