首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置Web API 2响应的内容类型

设置Web API 2响应的内容类型
EN

Stack Overflow用户
提问于 2014-06-19 13:38:50
回答 3查看 7.1K关注 0票数 1

对于我正在使用WebAPI2构建的RESTful应用程序接口,我真的很困惑如何以最合适的方式返回响应。

首先,我让我的操作返回IHttpActionResult,在这个方法中,我会使用return Ok()return NotFound()等。

然后我发现没有Forbidden(),所以我想我一定是做错了什么。所以现在我让我的操作返回HttpResponseMessage。在我的代码中,我通过执行以下操作返回响应:

代码语言:javascript
复制
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,但即使我可以,对每个请求执行此操作似乎也很麻烦。这是一种更好的方式,是我在这里忽略的某种最佳实践吗?

EN

回答 3

Stack Overflow用户

发布于 2014-06-20 04:34:05

您可以这样做,而不是手动填充它

代码语言:javascript
复制
var response = Request.CreateResponse(HttpStatusCode.OK, responseData);
return response;

这,这将返回json形式的内容类型。

票数 2
EN

Stack Overflow用户

发布于 2014-06-19 14:28:33

您可以通过在global.asax中修改集合来为每个请求设置内容协商

票数 0
EN

Stack Overflow用户

发布于 2014-06-19 14:53:34

你在你的global.asax中设置JsonFormatter了吗?例如:

代码语言:javascript
复制
GlobalConfiguration.Configuration.EnsureInitialized();
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();

我发现的另一个问题是,您控制器上的路由前缀/带参数的路由签名与您传入的Url不匹配,通常是404代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24299464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档