다음 예를 가정 해 봅시다. POJO 클래스 :저지. REST 요청에 대한 응답에서 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}/사용자/12345이 비밀번호를 필드를 반환하지 않는 것을 원하는 . 나는 내가 싫어하는 한 가지 해결책에 대해 논평했다.
일반적으로 API 작업을하는 동안 모든 요청에 대해 POJO의 필드를 볼 수 있도록 설정하고 싶습니다. 달성하기위한 우아한 방법이 있습니까?
감사합니다. 나는 개념을 일반적으로 이해한다. 그것은 아마도 일반적인 접근법 일 것입니다. 어쩌면 당신은 github 또는 다른 곳에서 유사한 오픈 구현 중 일부를 알고있을 것입니다. 코드를 읽는 것이 매우 유용 할 것입니다. – Syb3rian
이것은 내가 디자인 한 예제처럼 보입니다. https://mydevgeek.com/spring-boot-rest-web-service-part-2-crud-operations-service-layers-assemblers-utility-classes/ – MarianP