JAX-RS请求正文验证

时间:2017-10-24 17:58:24

标签: rest http-post jax-rs

我们正在使用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端点,我们就无法拦截并向用户报告“无效参数” “因为似乎过滤了无效/未知参数的请求而没有报告任何错误。

关于如何解决这个问题的任何想法?

1 个答案:

答案 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:无法识别的字段"<>"对于任何不受支持的参数