Feign Client
Feign Client는 Netflix에서 개발한 http client이다. Feign Client는 http client를 인터페이스를 통해 선언하는 방식으로 코드를 작성하기 때문에 유지보수하기가 좋다. Feign Client를 사용하는 방법은 아래 좋은 글이 많이 있으니 참고하면 된다.
이 글에서는 Feign Client를 사용하는 과정에서 발생한 에러를 해결하는 과정을 간단하게 정리했다.
Feign Client를 이용해서 api서버를 호출하는 과정에서 계속해서 http staus 411에러가 발생했다. POST요청이지만 body가 비어있고 쿼리스트링으로 id값을 전달하는 요청인데 content-length를 0으로 맞춰도 같은 에러가 반복해서 발생해서 open feign github의 issue를 한번 찾아봤다. (411에러를 해결하는 방법은 body에 빈 값을 넣어서 보내거나 Content-Length : 0을 헤더에 세팅해주면 해결)
답변을 보니 httpclient나 okhttp를 사용하라고 한다. feign clinet에 default http client가 있는데 content length 헤더 관련 세팅이 디폴드로 되어 있지 않아서 발생하는 문제인것 같다.
httpclient의존성을 추가시키고 다시 테스트 해보자
compile "io.github.openfeign:feign-httpclient:9.2.0"
9.2.0 버전을 사용하니 `original request is required`라는 에러가 발생한다. feign client와 httpclient의 버전이 맞지 않아서 발생하는 에러인것 같다. 10.2.0으로 맞추니까 정상적으로 응답이 온다.
compile "org.springframework.cloud:spring-cloud-starter-openfeign:2.2.5.RELEASE"
compile "io.github.openfeign:feign-httpclient:10.2.0"
'Spring & Spring Boot' 카테고리의 다른 글
스프링 - 비동기 처리 @async (0) | 2020.08.16 |
---|---|
컨트롤러 테스트 @WebMvcTest vs @SpringBootTest (0) | 2020.07.16 |
RequestContextHolder (0) | 2020.06.29 |
스프링 웹 프로그래밍 (2) (0) | 2020.02.22 |
스프링 웹 프로그래밍 (1) (0) | 2020.02.22 |
댓글