我使用POST创建消息并进行更新(我需要使用POST,而不是PUT)。该API具有以下说明:
POST /api/message
POST /api/message?update_message
我如何区别两者?猜猜我必须在函数中执行if
:
[HttpPost]
[Route("api/message")]
public async Task<HttpResponseMessage> Handle()
{}
检查请求是否包含参数update_message。
关于如何解决该问题的任何想法?谢谢。
答案 0 :(得分:1)
查询字符串参数具有一个键和一个值。您应该在“ update_message”参数中添加一个值,并使用它来确定是创建还是更新消息。 在route属性中,您可以定义查询字符串参数。
[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
}
}
答案 1 :(得分:0)
最后,两个动作都用此语法分开:
对于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()
{}