Web API 2:返回类型为IHttpActionResult时如何返回无引号纯字符串
解决方案:无需修改IHttpActionResult返回纯文本字符串
没问题!不用修改IHttpActionResult的返回类型,完全能实现返回不带双引号的纯文本字符串。原来的Ok("...")之所以带引号,是因为框架默认把传入的字符串序列成了JSON格式——而JSON里的字符串本身就需要双引号包裹。下面给你两种靠谱的实现方式:
方法1:使用Content()方法(推荐)
直接用Content()方法指定响应的媒体类型为text/plain,这样框架就不会把内容序列化为JSON,直接返回纯文本:
public IHttpActionResult Get() { return Content(HttpStatusCode.OK, "I am send by HTTP response", new MediaTypeHeaderValue("text/plain")); }
这里的核心是第三个参数MediaTypeHeaderValue("text/plain"),它告诉客户端返回的是纯文本而非JSON,所以输出就不会带双引号了。
方法2:使用ResponseMessage()手动构建响应
如果你需要更精细地控制HTTP响应的细节,可以手动构建HttpResponseMessage,再通过ResponseMessage()包装成IHttpActionResult返回:
using System.Text; using System.Net.Http.Headers; public IHttpActionResult Get() { var response = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent( "I am send by HTTP response", Encoding.UTF8, "text/plain" ) }; return ResponseMessage(response); }
这种方式同样通过指定text/plain的内容类型,确保返回的是无引号的纯文本字符串。
注意事项
如果省略了媒体类型的指定,框架会默认使用application/json作为Content-Type,此时你的字符串还是会被序列化为带双引号的JSON格式,所以一定要记得设置text/plain哦!
内容的提问来源于stack exchange,提问作者Nightscape
相关产品推荐
相关产品推荐

