对于我使用Web API 2构建的RESTful API返回响应的最合适方法,我真的很困惑。
首先我将操作返回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发送。我无法找到我应该如何改变响应的内容类型,但即使我能够对每个请求执行此操作似乎很麻烦。这是一种更好的方式,某种我在这里可以忽略的最佳实践吗?
答案 0 :(得分:2)
不是手动填充,而是可以执行此操作
var response = Request.CreateResponse(HttpStatusCode.OK, responseData);
return response;
这样,这将返回内容类型为json。
答案 1 :(得分:0)
您可以通过修改global.asax
中的集合来为每个请求设置内容协商答案 2 :(得分:0)
您是否在global.asax中设置了JsonFormatter?例如:
GlobalConfiguration.Configuration.EnsureInitialized();
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();
我发现的另一个问题是您的Controller上带有参数签名的路由前缀/路由与您传递的Url通常不会与404代码相匹配。