我正在c#中构建一个由外部服务器调用的webapi。
假设我的API地址是www.server.com/webapi/service1
当我在将要使用它的应用程序中设置上面的地址时,它会向service1发送一个带有空主体的简单POST,并等待特定的KEY作为响应(在正文中),就像认证。确定。
可以使用POST调用相同的service1,在正文中传递原始JSON,并且我使用[FromBody]属性来获取正文和进程。
我试过这个来管理空的POST调用和使用正文数据的调用:
[HttpPost]
[Route("webapi/service1")]
public HttpResponseMessage Post()
{
var resp = new HttpResponseMessage(HttpStatusCode.OK);
resp.Content = new StringContent(TokenKey.ToString(), System.Text.Encoding.UTF8, "text/html");
return resp;
}
[HttpPost]
[Route("webapi/service1")]
public async Task<HttpResponseMessage> Post([FromBody] RetornoChat retornoChat)
{
await closedChat(retornoChat); //process body
return resp;
}
但它没有用。我管理一个像下面的代码一样的解决方法,我检查[FromBody]中的类是否为空,如果是这种情况返回特殊字符串验证并完成,如果有一个正文然后获取数据验证和处理。我想知道是否有更好的解决方案。
我真的认为解决方法是将post方法加倍,当有一个身体时,它会用[frombody]调用帖子,当没有身体时它会转到空帖子。
[HttpPost]
[Route("webapi/service1")]
public async Task<HttpResponseMessage> Post([FromBody] RetornoChat retornoChat)
{
var resp = new HttpResponseMessage(HttpStatusCode.OK);
resp.Content = new StringContent(TokenKey.ToString(), System.Text.Encoding.UTF8, "text/html");
if (retornoChat == null)
{
}
else
{
//get the body data and process
}
return resp;
}
提前感谢您的时间!