gpt4 book ai didi

java - Jersey 。在 REST 请求的响应中隐藏一些 POJO 字段的好方法

转载 作者:行者123 更新时间:2023-12-01 17:53:56 26 4
gpt4 key购买 nike

让我们假设以下示例。POJO 类:

@XmlRootElement 
public class User {
private String id;
private String email;
private String password;
private String firstName;
private String lastName;

// getters and setters
}

资源类:

@Path("user")
public class UserResource {
private UserRepository userRepository = new UserRepositoryStub();

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
public User createUser(User user) {
return userRepository.create(user);
}

@GET
@Path("{objectId}")
@Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
public Response getManagedObject(@PathParam("objectId") String objectId) {
if (objectId == null) {
return Response.status(Response.Status.BAD_REQUEST).build();
}
User user = userRepository.findUser(objectId);

if (user == null) {
return Response.status(Response.Status.NOT_FOUND).build();
}

// Possible, but seems that not nice solution
// user.setPassword(null);

return Response.ok().entity(user).build();
}
}

在这个简单的示例中,我希望 GET 请求 {url}/user/12345 不返回密码字段。我评论了一种我不喜欢的解决方案。

一般来说,在处理 API 时,我希望为每个请求配置 POJO 字段的可见性。有没有一种优雅的方式来实现这一点?

最佳答案

创建一个 TransferObject,即 TO 或 DTO,其中包含您希望用户在 JSON 响应中显示的字段。您可以在字段上使用 @JsonIgnore,JSON 解析器不会解析该字段,因此不会包含在响应中。

关于java - Jersey 。在 REST 请求的响应中隐藏一些 POJO 字段的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47042547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com