WebAPI .NET-POST请求按参数过滤

时间:2019-07-18 08:59:51

标签: .net rest api webapi2

我使用POST创建消息并进行更新(我需要使用POST,而不是PUT)。该API具有以下说明:

POST /api/message

POST /api/message?update_message

我如何区别两者?猜猜我必须在函数中执行if

[HttpPost]
[Route("api/message")]
public async Task<HttpResponseMessage> Handle()
{}

检查请求是否包含参数update_message。

关于如何解决该问题的任何想法?谢谢。

2 个答案:

答案 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()
{}