对于我正在使用WebAPI2构建的RESTful应用程序接口,我真的很困惑如何以最合适的方式返回响应。
首先,我让我的操作返回IHttpActionResult,在这个方法中,我会使用return Ok()或return NotFound()等。
然后我发现没有Forbidden(),所以我想我一定是做错了什么。所以现在我让我的操作返回HttpResponseMessage。在我的代码中,我通过执行以下操作返回响应:
HttpResponseMessage response = Request.CreateResponse();
response.StatusCode = HttpStatusCode.OK;
response.Content = new StringContent(JsonConvert.SerializeObject(responseData));
return response;问题是,此响应现在使用Content-Type "text/plain“发送-它需要使用"application/json”的Content-Type发送。我不知道该如何更改响应的Content-Type,但即使我可以,对每个请求执行此操作似乎也很麻烦。这是一种更好的方式,是我在这里忽略的某种最佳实践吗?
发布于 2014-06-20 04:34:05
您可以这样做,而不是手动填充它
var response = Request.CreateResponse(HttpStatusCode.OK, responseData);
return response;这,这将返回json形式的内容类型。
发布于 2014-06-19 14:28:33
您可以通过在global.asax中修改集合来为每个请求设置内容协商
发布于 2014-06-19 14:53:34
你在你的global.asax中设置JsonFormatter了吗?例如:
GlobalConfiguration.Configuration.EnsureInitialized();
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();我发现的另一个问题是,您控制器上的路由前缀/带参数的路由签名与您传入的Url不匹配,通常是404代码。
https://stackoverflow.com/questions/24299464
复制相似问题