Springboot返回JSON类型响应及Content-Type设置

Springboot返回JSON类型响应及Content-Type设置⼀、背景
服务器软件⽤Spring boot开发,API调⽤的响应消息格式为JSON。
对端调⽤接⼝后⽆法解析响应。
抓包看Response的Body部分确实是正确的JSON格式字符串。
⼆、问题分析
世界革命继续分析⽇志发现对端收到的响应消息类型是text/plain?!jstor
对端解析先判断消息类型,这是⽆法按照JSON格式解析的。
三、问题解决
1. ⽹上流传最⼴泛的两种说法:
1.1 在类上使⽤注解@RestController
1.2 在⽅法上使⽤注解@ResponseBody
这个只是必要条件,却不是设置响应消息类型的⽅法。
2. 通过HttpServletResponse
1 @RequestMapping(value = { "/api/v1/test" }, method = { RequestMethod.POST }")辽宁同志
2 @ResponseBody
3public String cancelCall(HttpServletResponse rsp) {
联想网御防火墙4  rsp.addHeader("Access-Control-Allow-Origin", "*");
5  rsp.setHeader("Content-Type", "application/json;charset=UTF-8");
气体常数
6  return"{\"url\":\"192.168.1.1/notify\"}";
出井伸之7 }
跟踪⽇志,发现对端接收的响应的消息类型仍然是text/plain,这说明Spring重新设置了响应消息头。
3. 最终的解决办法
Spring留了⼀个设置响应消息Content-Type的接⼝。
在注解@RequestMapping增加⼀个produces参数项即可。
1 @RequestMapping(value = { "/api/v1/test" }, method = { RequestMethod.POST }, produces="application/json;charset=UTF-8")
2 @ResponseBody
3public String cancelCall(HttpServletResponse rsp) {
4  rsp.addHeader("Access-Control-Allow-Origin", "*");
5  return"{\"url\":\"192.168.1.1/notify\"}";
6 }
再跟踪⽇志,发现对端收到的响应消息类型是application/json;charset=UTF-8了。

本文发布于:2024-09-21 19:50:04,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/648676.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:响应   消息   类型   对端   发现   增加
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议