一、导读
改造post(application/json)方式的接口的时候,前端传了多余的字段,后台接口就报错了,get请求多传参数是不会报错的。
二、问题描述
1. 使用@RequestBody注解的时候需要注意一些问题:
一个方法中只能有一个@RequestBody注解。
默认情况下@RequestBody标注的对象必须包含前台传来的所有字段。
如果没有包含前台传来的字段,就会报错:Unrecognized field xxx , not marked as ignorable,这是因为MappingJacksonHttpMessageConverter默认要求必须存在相应的字段。如果没有前台传来的某个字段,就会报错。。
三、解决办法
- 可以增加一个字段来接收前台传来的这个值,如果存在多个字段,这种方式很不好(就算一个字段,如果没用,新增字段也不好)。
或者在前台往后台传值的时候,去掉无用的字段。这样还能减少网络传输的大小。
当然如果这个字段前端是统一加得,那么就需要后台处理一下。
使用Jackson提供的json注解。
@JsonIgnore注解用来忽略某些字段
@JsonIgnoreProperties(ignoreUnknown = true)
- 将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。
- 这个注解还可以指定要忽略的字段。使用方法如下:
@JsonIgnoreProperties({ “internalId”, “secretKey” })
指定的字段不会被序列化和反序列化。
版权声明:本文为qq_37054881原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。