Java开发REST服务POST接口返回400请求语法错误排查
错误排查及修复方案
- 补充Model类的无参构造函数
JAX-RS默认使用Jackson完成JSON和Java对象的转换,转换要求实体类必须存在公共无参构造方法,你当前的Model类未显式定义,部分环境下会触发反序列化失败,补充即可:
- 补充Model类的无参构造函数
public class Model { // 新增无参构造 public Model() { } private int id; private String descripcion; private double precio; // 原有getter、setter保持不变 }
- 替换基本数据类型为包装类
你的Model类中id为int类型、precio为double类型,二者都是基本数据类型,无法接收null值。如果请求体中未传对应字段、或者字段值为null,就会触发解析报错。替换为对应包装类即可:
- 替换基本数据类型为包装类
private Integer id; private String descripcion; private Double precio; // 同步修改getter、setter的参数和返回值类型
- 检查JSON解析依赖
确认你的项目中已经引入了JAX-RS对应的JSON解析依赖,以常用的Jersey实现为例,需要引入如下Maven依赖:
- 检查JSON解析依赖
<dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> <version>对应你的Jersey版本号</version> </dependency>
- 核对Postman配置
确认两项配置无误:
- 请求头新增
Content-Type字段,值为application/json - 请求体选择raw格式,类型设置为JSON,字段名要和Model类的属性名完全一致,数值类型不要加引号,示例如下:
- 核对Postman配置
{ "id": 1, "descripcion": "商品描述", "precio": 129.9 }
内容的提问来源于stack exchange,提问作者asunawesker
相关产品推荐
相关产品推荐

