SpringBoot에 Http Client Feign 적용해보기
- Project/Project Setting
- 2019. 10. 25.
Feign 적용
외부 API를 쉽게 호출할 수 있는 Http Client Binder인 Feign을 적용해보자.
개발환경 : SptringBoot 2.1.8
1. build.gradle 에 의존성 추가
//feign
compile "org.springframework.cloud:spring-cloud-starter-openfeign:2.1.0.RELEASE"
2. application.yml 에 feign으로 연동할 외부 Server 정보 설정
# feign URL
feign:
test-api:
url: http://localhost:7070
httpclient:
connection-timeout: 1
3. SpringBoot의 xxxAplication.java 파일 안에 @EnableFeignClients 어노테이션 추가
@EnableFeignClients
public class TechnologyApplication {
...
}
4. 외부 서버의 API를 호출할 interface 파일 생성 후 설정
@FeignClient(name = "test-api", url = "${feign.test-api.url}")
public interface feignClient {
...
}
5. Controller에서 4번에서 생성한 interface의 method 호출
public class FeignController {
private final TestClient testClient;
public FeignController(TestClient testClient) {
this.testClient = testClient;
}
분석
SptringBoot에서 Feign을 설정하고 사용하는 방법은 생각보다 간단하다. 이제, 설정한 외부 서버의 API를 어떻게 호출해야하는지를 알아보자. 우리가 4번에서 생성한 interface의 파일을 자세히 살펴보자.
@FeignClient(name = "test-api", url = "${feign.test-api.url}")
public interface TestClient {
@GetMapping("/test")
String authTest();
/** 외부 API의 Method 명과 상관이 있을까? */
@GetMapping("/test")
String authTest2();
@GetMapping("/test/user")
String paramTest(@RequestParam String userID);
/** @RequestParam 어노테이션의 name을 꼭 써야할까? */
@GetMapping("/test/user")
String paramTest2(@RequestParam(name = "userID") String userID);
/** @RequestParam 어노테이션의 name을 안썼을때 파라미터 변수명과 상관이 있을까? */
@GetMapping("/test/user")
String paramTest4(@RequestParam String user);
/** 외부 API의 파라미터 변수명과 상관이 있을까? */
@GetMapping("/test/user")
String paramTest3(@RequestParam(name = "userID") String user);
}
(1) AuthTest() : 성공
(2) AuthTest2() : 의문 1. 외부 api의 메소드과 다르다면? -> 성공
(3) paramTest(@RequestParam String userID) : 성공
(4) paramTest2(@RequestParam(name = "userID") String userID) : 의문 2. name속성을 추가한다면? -> 성공
(5) paramTest4(@RequestParam String user) : 실패
(6) paramTest3(@RequestParam(name = "userID") String user) : 의문 3. 파라미터명이 다를때, name 속성을 > 추가한다면? -> 성공
마무리
위 결과에 따라, feign으로 외부 서버의 API를 호출할때에는 파라미터명을 같게 해주거나, 만약 파라미터명을 다르게 해야한다면 @RequestParam 어노테이션의 name 속성을 써줘야함을 알 수 있다.
요즘에는 외부 API를 호출할 수 있는 OkHttp 등 많은 라이브러리가 있지만 Feign을 적용해보는 것도 괜찮은 것 같다.
'Project > Project Setting' 카테고리의 다른 글
SpringBoot + Redis 연동하기 (0) | 2020.01.19 |
---|---|
스프링부트 공통 Exception 처리하기 (1) | 2020.01.12 |
SpringBoot에 Swagger을 빠르게 적용해보기 (0) | 2019.10.25 |
AWS ec2에 jenkins 설치하기 (+jdk1.7 삭제 후 openjdk11 설치) (0) | 2019.10.19 |
스프링부트 NoHandlerFoundException 다루기위한 설정 (1) | 2019.02.15 |