더북(TheBook)

getOrganization() 메서드를 정의하는 방법은 스프링 Controller 클래스에서 엔드포인트를 노출하는 방식과 똑같다. 첫째, 조직 서비스를 호출할 때 HTTP 동사와 엔드포인트를 노출하도록 매핑하는 @RequestMapping 애너테이션을 getOrganization() 메서드에 정의한다. 둘째, URL에 전달된 조직 ID를 @PathVariable 애너테이션을 사용하여 getOrganization() 메서드의 organizationId 매개변수에 매핑한다. 조직 서비스 호출 반환값은 getOrganization() 메서드의 반환값으로 정의된 Organization 클래스에 자동으로 매핑된다. OrganizationFeignClient 클래스를 사용하는 데 필요한 것은 이 클래스를 자동 연결하고 사용하는 것뿐이다. 나머지 코드는 Feign 클라이언트 코드가 여러분을 대신할 것이다.

에러 핸들링

표준 스프링 RestTemplate 클래스를 사용할 때 모든 서비스 호출에 대한 HTTP 상태 코드(status code)는 ResponseEntity 클래스의 getStatus() 메서드로 반환된다. 하지만 Feign 클라이언트를 사용하면 호출된 서비스에서 반환한 모든 HTTP 4xx – 5xx 상태 코드가 FeignException에 매핑된다. FeignException에는 특정 에러 메시지에 대해 파싱할 수 있는 JSON 내용이 포함되어 있다.

Feign은 사용자가 정의한 Exception 클래스에 에러를 재매핑하는 에러 디코더(decoder) 클래스를 작성할 수 있는 기능을 제공한다. 이 디코더를 작성하는 작업은 이 책 범위를 벗어나지만 Feign 깃허브(https://github.com/Netflix/feign/wiki/Custom-error-handling)에서 이와 관련된 예를 찾을 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.