为 RESTful 服务实现静态过滤2025年1月17日 | 阅读时长:4分钟 在本节中,我们将学习如何过滤请求。 过滤器是 JAX-RS 框架提供的重要功能之一。它在各种上下文中被使用。它可以应用于对资源的请求或来自资源的响应,或两者。 考虑这样一种情况:我们不想在响应中显示某些类成员。这个过程称为过滤。 Jackson 有两个注解用于过滤:@JsonIgnore 和 @JsonIgnoreProperties。 @JsonIgnore它是一个成员或方法级别的注解。它期望要排除的属性被逐个标记。如果我们想从序列化和反序列化过程中排除一个成员,我们可以注解实际的属性或它的 setter 或 getter。 让我们创建一个过滤器来过滤响应。我们将不涉及用户示例,而是创建一个新的控制器和 bean 来执行过滤。 步骤 1:在包 com.javatpoint.server.main.filtering 中创建一个名为 FilteringController.java 的 Controller 类。 步骤 2:创建一个名为 SomeBean 的 bean。 FilteringController.java 步骤 3:创建一个名为 SomeBean.java 的类。定义三个属性 name、phone 和 salary。 步骤 4:生成构造函数。 步骤 5:生成 Getters 和 Setters。 SomeBean.java 步骤 6:打开 REST 客户端 Postman 并发送 GET 请求。它返回两个字段:name 和 phone。字段 salary 将不会随响应一起发送。 ![]() 无论我们是发送一个 SomeBean 作为响应,还是发送一个 SomeBeans 列表作为响应,字段 salary 都不会在响应中发送。 步骤 7:创建另一个 bean,它返回一个 SomeBean 列表。 FilteringController.java 步骤 8:再次使用 URI https:///filtering-list 发送 GET 请求,它返回一个 SomeBeans 列表。 ![]() 还有另一种方法可以使用注解 @JsonIgnoreProperties。 @JsonIgnoreProperties@JsonIgnoreProperties 是一个类级别的注解。它忽略 JSON 序列化和反序列化中的逻辑属性。 在下面的 SomeBean.java 文件中,我们指定了属性 name 和 phone,我们希望在响应中忽略它们。这两个属性将参与 JSON 序列化和反序列化。 如果属性 salary 用 @JsonIgnore 注解,那么 JSON 序列化和反序列化中所有被忽略的属性都将被忽略。 换句话说,@JsonIgnore 和 @JsonIgnoreProperties 注解忽略的逻辑属性的并集被认为在 JSON 序列化和反序列化中被忽略。 SomeBean.java 当我们触发 GET 请求时,它返回一个空列表,因为属性 name 和 phone 在 @JsonIgnoreProperties 中指定,而属性 salary 用 @JsonIgnore 注解。因此,它返回空列表。 ![]() 现在删除注解 @JsonIgnore 并再次触发 GET 请求。它只返回 salary 属性。 ![]() 我们所做的一切都称为静态过滤。假设我们想在一个场景中忽略 name,在另一个场景中忽略 salary,我们不能使用静态过滤来实现。为了实现这种类型的过滤,我们使用动态过滤。 下一个主题为 RESTful 服务实现动态过滤 |
我们请求您订阅我们的新闻通讯以获取最新更新。