我们正在使用JAX-RS为我们的一个项目实现REST API。要求是用户将以JSON格式传递请求对象。
让我们假设我们有一个在命中API端点时调用的方法
@POST
@PATH("/api/user")
@Produces("application/json")
@Consumes("application/json")
public CustomResponse methodA(@RequestBody UserInfo userDTO)
示例请求对象:
{ “名字”:“测试”, “姓氏”:“姓名”, “SNO”: “A123” }
UserInfo DTO
private String firstName;
private String lastName;
private String sno;
getter and setters
现在,如果用户尝试将其他参数添加到上面给出的请求对象(例如:“age”)并调用api端点,我们就无法拦截并向用户报告“无效参数” “因为似乎过滤了无效/未知参数的请求而没有报告任何错误。
关于如何解决这个问题的任何想法?
答案 0 :(得分:0)
我能够通过添加以下代码来识别无法识别的属性:
将方法签名更改为 public CustomResponse methodA(@RequestBody String reqObj)
然后
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
UserInfo userDTO = mapper.readValue(reqObj, UserInfo.class);
我们现在看到了 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段"<>"对于任何不受支持的参数