인프런 커뮤니티 질문&답변

jk kwon님의 프로필 이미지
jk kwon

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

ErrorDecoder를 이용한 예외 처리

강의 ErrorDecoder를 이용한 예외 처리부분 질문 입니다.

해결된 질문

작성

·

275

0

 안녕하세요. 강의 잘듣고 있습니다.

강의 내용중 이해가 되지않는 부분이 있어서 문의 드립니다.

동영상 13:22초경 feignErrorDecoder 코드의 

 decode 함수에서 

case 404: 부분의 에러 메시지가 왜 order is empty 

인지 이해가 가지않습니다.

제생각은 feignClient 에서 url 을 잘못 등록한 404 의경우..

page not found 가 발생해야 할것같은데 이해가 잘 되지않아서

질문 남깁니다.

감사합니다.

답변 1

4

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다. 

HTTP Status code 중에서 404는 Page not found로 사용되기도 하지만, Not found의 의미로 사용될 수 있습니다. 여기에서 Page라는 것은 서버의 Resource 중 사용자가 요청한 Page가 존재하지 않음을 나타내는 에러 코드라고 보시는게 정확할 것 같습니다.

RESTful API를 이용해서, 사용자는 서버에 존재하는 Resource들의 상태를 변경하거나 사용하는 데에 사용할 수 있습니다. 예를 들어, http://localhost:8080/users/10000 이라고 서버가 가지고 있는 데이터 중 사용자(users)라는 Resource 중에서 10000이라는 데이터의 정보를 얻고 싶을 때, 해당 데이터가 존재하지 않는 다고 가정해 봅시다. DB에 자료가 존재하지 않는 것이기 때문에, 서버 측에 어떤 오류 메시지(500 Error)를 전달할 이유는 없습니다. 그렇다고 데이터는 존재하지 않는데, 사용자에게 200 OK 상태코드를 반환하는 것도 적절하지 않습니다. 이럴 경우에 404 Not Found를 사용해 보실 수 있습니다. Page Not Found의 의미라기 보다는, Resource Not Found의 의미로 404를 전달하고 클라이언트 측에서 http://localhost:8080/users/10000 에 대한 결과로 해당 데이터가 존재하지 않는다고 처리해 볼 수 있습니다. 물론 Endpoint자체를 잘못 입력하여 404 에러 메시지가 전달될 수도 있습니다만, 이것은 클라이언트측 애플리케이션을 개발할 때, 서버와의 API 명세서에서 정의해서 처리할 수 있을거라 생각됩니다. 

강의에서 404로 에러 코드가 처리되는 이유는 order service에 user가 주문한 내역을 요청 했는데, 해당 페이지가 존재하지 않는다는 의미라기 보다는, 주문 데이터가 존재하지 않을 경우에 대한 404 Not Found 라는 에러 코드가 전달 되었기 때문입니다. 

감사합니다. 

jk kwon님의 프로필 이미지
jk kwon

작성한 질문수

질문하기