• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

HATEOAS 방식에서 ResponseEntity .notFound() 반환처리 질문입니다.

22.03.09 06:58 작성 23.02.07 22:15 수정 조회수 574

0

아무도 안물어보시는것 같아서, 묻게되었습니다.

  • 영상 7분 9초 경 - 영상에 없는 "추가적인 NOT_FOUND 반환값"
    을 갖도록 해서, 문서처리를 하려고합니다

이는, ResponseEntity.notFount() 반환값이, HeadersBuilder 인터페이스 타입이라서..

  • ResponseEntity.HeadersBuilder

이 경우 body(..) 가 없고, header( .. ) 만 있는데, 본문을 담을 수 없습니다.
그래서 Header 만 추가되도록 구성해야 하는데요, 학생들에게 구현하도록 두신건지,
너무 간단해서 언급 안하신건지, 구현하려고 하니 검색자료가 잘 나오질 않아 해매고 있습니다.

질문입니다
HATEOAS 의 경우, 이런 부분은 일반적으로 어떻게 처리가 되는지요?

아래 코드에서 ".header(HttpHeaders.?, ...?)"에 Location 속성에 경로값 설정만 하면 될까요?

@GetMapping("/{id}")
public ResponseEntity getEvent(@PathVariable Integer id) {
   var dtoOut = eventRepository.findById(id)...

   if (dtoOut.isEmpty()) return ResponseEntity
         .notFound()
         .header(HttpHeaders.??, ...???) <<<
         .build();
   ...
   return ResponseEntity.ok(...)
}

또는, 구현할 필요가 없나요? (HATEOAS 가 전후방 이동경로를 제공하는 메커니즘이라면, 이 경우에도 방향을 잃지 않도록 제공해야 할까요? 아니면 필요가 없나요? 또는 redirect.. )

궁금합니다

 

답변 1

답변을 작성해보세요.

1

좋은 질문 감사합니다. 404에 대한 경우를 다루지 않았었군요. 정답이 있는 건 아니니까 헤더에 링크 정보를 추가하고 싶다면 말씀하신 방법을 쓰셔도 좋고, 본문을 추가하고 싶으시면 ResponseEntity를 new를 사용해서 만들어 쓰셔도 됩니다.

ResponseEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, HttpStatus status) 

이 생성자를 쓰시면 되겠네요.

Truestar님의 프로필

Truestar

질문자

2022.03.11

좋은 조언 감사드립니다. 도움이 많이 되었습니다.

답글을 보고나서 `of` factory 메서드 가 모든 기능을 지원하지 않는것을 알았고,
ResponseEntity 상속 구현으로도 또다른 factory 메서드를 통해
생성자 로직을 다시 간소화 시킬수 있겠다 생각이 들었습니다.

앞으로 생성자도 꼭 살펴보도록 할께요. 고맙습니다.!