Spring boot返回JSON类型响应及Content-Type设置
2019独角兽企业重金招聘Python工程师标准>>>
一、背景
服务器软件用Spring boot开发,API调用的响应消息格式为JSON。
对端调用接口后无法解析响应。
抓包看Response的Body部分确实是正确的JSON格式字符串。
二、问题分析
继续分析日志发现对端收到的响应消息类型是text/plain?!
对端解析先判断消息类型,这是无法按照JSON格式解析的。
三、问题解决
1. 网上流传最广泛的两种说法:
1.1 在类上使用注解@RestController
1.2 在方法上使用注解@ResponseBody
这个只是必要条件,却不是设置响应消息类型的方法。
2. 通过HttpServletResponse
1 @RequestMapping(value = { "/api/v1/test" }, method = { RequestMethod.POST }") 2 @ResponseBody 3 public String cancelCall(HttpServletResponse rsp) { 4 rsp.addHeader("Access-Control-Allow-Origin", "*"); 5 rsp.setHeader("Content-Type", "application/json;charset=UTF-8"); 6 return "{\"url\":\"http://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 3 public String cancelCall(HttpServletResponse rsp) { 4 rsp.addHeader("Access-Control-Allow-Origin", "*"); 5 return "{\"url\":\"http://192.168.1.1/notify\"}"; 6 }
再跟踪日志,发现对端收到的响应消息类型是application/json;charset=UTF-8了。
ps:
从content-type设置看Spring MVC处理header的一个坑
https://www.cnblogs.com/kaiblog/p/7565231.html?tdsourcetag=s_pcqq_aiomsg
转载于:https://my.oschina.net/jack088/blog/2993923
Spring boot返回JSON类型响应及Content-Type设置相关推荐
- Spring Boot 返回 JSON 数据,一分钟搞定!
在 WEB 项目中返回 JSON 数据是常见的交互形式,在 Spring Boot 中这一切都变得十分简单.So easy!!! 你所需具备的基础 什么是 Spring Boot? Spring Bo ...
- 从零开始学springboot笔记(二)-Spring boot返回json数据(中文无乱码)
先创建json实体类,如下: public class Demo {private int age; private String address; private String name; priv ...
- Spring Boot 返回 XML 数据,一分钟搞定!
2019独角兽企业重金招聘Python工程师标准>>> Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,所以这一块代码就不贴了,可以点击 ...
- spring boot / cloud (二) 规范响应格式以及统一异常处理
spring boot / cloud (二) 规范响应格式以及统一异常处理 前言 为什么规范响应格式? 我认为,采用预先约定好的数据格式,将返回数据(无论是正常的还是异常的)规范起来,有助于提高团队 ...
- Spring Boot返回前端Long型丢失精度
最近为Prong开发了一个基于snowflake算法的Java分布式ID组件,将实体主键从原来的String类型的UUID修改成了Long型的分布式ID.修改后发现前端显示的ID和数据库中的ID不一致 ...
- Spring Boot处理JSON数据
Spring Boot处理JSON数据 在Spring Boot的Web应用中,内置JSON数据解析功能,默认使用Jackson自动解析,不需要加载Jackson依赖包,当控制器返回一个Java对象或 ...
- 利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
在Spring Boot的Web应用中 内置了JSON数据的解析功能,默认使用Jackson自动完成解析(不需要解析加载Jackson依赖包)当控制器返回一个Java对象或集合数据时 Spring B ...
- spring boot 中json数据处理
spring boot获取json数据,使用@RequestBody JSONObject jsonParma注解,获取数据用jsonParma.getString方法 String类型转int使用I ...
- json日期格式化 java_java_Java Web程序中利用Spring框架返回JSON格式的日期,返回Json时格式化日期Date
第一 - phpStudy...
Java Web程序中利用Spring框架返回JSON格式的日期 返回Json时格式化日期Date第一步:创建CustomObjectMapper类 /** * 解决SpringMVC使用@Respo ...
最新文章
- 软件测试质量过程检测文档_如何编写实际上有效的质量检查文档
- 体验使用node.js创建vue+Element-UI项目
- 利用Docker搭建Redis主从复制集群
- 【C语言】Linux内核源码--min,swap宏定义
- centos7 配置虚拟交换机(物理交换机truckport设置)(使用brctl)
- f分布表完整图a=0.05_2019年05月16日,沪深A股股票分析
- 一些Vue开发小技巧,让你开发更便捷
- 闲话WPF之十三(WPF中的资源)
- vuex-token的持久化
- 使用Spring Boot CLI的Spring Boot Initilizr
- arcpy 实现列举目录下的要素类与描述矢量数据要素类
- 树莓派使用 USB 摄像头做网络监控
- Redis势不可挡系列之概念剖析
- 干货 | 百亿节点,毫秒级延迟,携程金融基于nebula的大规模图应用实践
- oracle+soacs,第 3 章 使用 C++ 编译器选项
- 手把手教你构建 C 语言编译器(1)- 设计
- All-Pay Contests 论文定理推导(博弈论+机制设计)
- 挑选电脑免费加密软件特别注意哪些?
- linux设置用户密码
- C# 使用正则表达式提取文字