当前位置: 首页 > 知识库问答 >
问题:

JAX-RS请求正文验证

浦修文
2023-03-14

我们正在使用JAX RS为我们的一个项目实现一个REST API。要求是用户将以JSON格式传入请求对象。

让我们假设我们有一个在命中APIendpoint时调用的方法

@POST
@PATH("/api/user")
@Produces("application/html" target="_blank">json")
@Consumes("application/json")
public CustomResponse methodA(@RequestBody UserInfo userDTO)

示例请求对象:

{ “firstName”:“Test”, “lastName”:“Name”, “sno”:“A123” }

UserInfo DTO
private String firstName;
private String lastName;
private String sno;

吸气剂和setter

现在,如果用户尝试向上面给出的请求对象添加其他参数(例如:“age”)并调用apiendpoint,我们无法截取并向用户报告相同的参数,并说“Invalid parameter age”,因为请求似乎被过滤掉了无效/未知参数,并且没有报告任何错误。

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

共有1个答案

慎兴业
2023-03-14

通过添加以下代码,我能够识别无法识别的属性:

将方法签名更改为公共自定义响应方法A(@RequestBody字符串 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:Unrecognified字段“

 类似资料:
  • 问题内容: 我希望能够从请求中打印JAX-RS 2 JSON有效负载,而不管我的应用程序服务器上的实际实现如何。 我已经尝试过在SO上提出建议的解决方案,但是所有解决方案都包含实际实现中的二进制文件(例如Jersey和类似文件),并且只允许在我的应用程序中使用javaee- api v 7.0。 我尝试在我的客户端上实现ClientRequestFilter和ClientResponseFilte

  • 问题内容: 我有一个关于JAX-RS的非常基本的问题,但我无法以某种方式轻易找到答案。 我正在尝试将使用“标准” Javax servlet的REST服务重构为“手工”将请求路由到方法的“ REST服务”,使其成为“更干净的” JAX- RS实现。当前应用程序在servlet init()期间设置一些变量。它将那些属性分配为HttpServlet类的属性,因此它们在每个doGet()期间都可用,并

  • 有人知道出了什么问题吗?

  • 问题内容: 在移动应用程序和Web服务之间具有某种代理,发出发布请求时的响应使我们感到困惑。我们收到状态为200的回复:OK。但是我们找不到/提取JSON响应主体。 我们正在使用JAX-RS。有人可以提供一些提示来从服务器响应中提取JSON正文()吗? 问题答案: 试试这个: 编辑 感谢@Martin Spamer提及它仅适用于Jersey 1.x罐子。适用于Jersey 2.x

  • 那么有没有计划在JAX-RS中添加验证组呢?

  • 我正在进行一个示例项目,使用: JAX-RS(泽西2) JSR-303 Bean validaiton 泽西测试测试 Grizzly Http容器 杰克逊2.7.3 在添加@JsonIgnore和@JsonProperty之前,一切都按预期进行,在对对象属性执行bean验证时,我能够毫无问题地运行测试。通常情况下,“password”字段不应用于反序列化,所以我用@JsonIgnore标记了它的g