-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
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
백기선
지식공유자2022.03.11
좋은 질문 감사합니다. 404에 대한 경우를 다루지 않았었군요. 정답이 있는 건 아니니까 헤더에 링크 정보를 추가하고 싶다면 말씀하신 방법을 쓰셔도 좋고, 본문을 추가하고 싶으시면 ResponseEntity를 new를 사용해서 만들어 쓰셔도 됩니다.
ResponseEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, HttpStatus status)
이 생성자를 쓰시면 되겠네요.
Truestar
질문자2022.03.11
좋은 조언 감사드립니다. 도움이 많이 되었습니다.
답글을 보고나서 `of` factory 메서드 가 모든 기능을 지원하지 않는것을 알았고,
ResponseEntity 상속 구현으로도 또다른 factory 메서드를 통해
생성자 로직을 다시 간소화 시킬수 있겠다 생각이 들었습니다.
앞으로 생성자도 꼭 살펴보도록 할께요. 고맙습니다.!
답변 1