c#webapi post()和post([FromBody])

时间:2017-10-26 20:54:39

标签: c# json asp.net-web-api

我正在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;

            }

提前感谢您的时间!

0 个答案:

没有答案