2017-04-14 3 views
1

내 RESTful 서비스 (Spring, Java)에서 PATCH 요청 메소드를 구현 중입니다. 컨트롤러 메서드에서 DTO 객체를 사용하고 있습니다. 저는 DTO를 엔티티에 매핑하기 위해 Dozer를 사용하고 있습니다.PATCH 요청 방법 : 필드 매핑

PATCH 요청 방법에는 명백한 문제가 있습니다. 즉, null 값이있는 필드는 엔티티 필드가 null로 업데이트되어야하거나 엔티티 필드가 변경되지 않아야 함을 의미 할 수 있습니다. 인터넷의 일부 게시물을 살펴본 결과, uri 매개 변수에 명시 적으로 NULL을 적용 할 필드 목록을 허용하기로 결정했습니다.이 목록은 nullFields으로 간주됩니다. 수신 된 값이 널 (NULL)이면 다른 모든 필드는 변경되지 않습니다.

지금은이 솔루션을 구현하는 3 개 가지 방법을 볼 수

  1. 가 null 값 평소 건너 뛰는 필드와 도저지도 개체가하십시오. 그런 다음 명시 적으로 필드를 nullFields에서 null로 설정하십시오. nullFields의 값을 반복하고 엔티티의 적절한 setter 메소드를 호출해야합니다. 객체 필드를 추가, 삭제 또는 이름을 바꿀 때마다이 필드 - 세터 매핑을 변경해야하기 때문에이 옵션이 마음에 들지 않습니다.
  2. 위와 같습니다. Dozer가 내 객체를 매핑 한 다음 일부 필드를 명시 적으로 null로 설정했지만 리플렉션을 사용합니다. 그렇다면 필자는 1에서 설명한 필드 - 세터 매핑을 유지할 필요가 없었습니다.하지만 나쁜 생각으로 간주되는 리플렉션을 사용해야합니다.
  3. 매핑 구성을 동적으로 또는 다른 방법으로 변경하여 Doctor가 nullFields에 포함 된 필드를 건너 뛰도록하십시오. 그러나 나는 그것을 어떻게하는지 알 수 없었다. 그래서, 제 질문은 가능합니까?

나는 또한 PATCH 요청 방법을 구현하는 다른 방법을 고맙게 생각합니다. DTO 대신 JSON 객체를 사용하는 것을 고려해 봤지만, 다른 대안이 없다면이 대안을 선호하지 않습니다.

답변