Spring Cloud OpenFeign 사용해보기
2024. 5. 13. 19:56ㆍSpring Cloud
반응형
들어가며
Spring Cloud OpenFeign은 Spring 어플리케이션에 REST 클라이언트를 제공하기 위한 라이브러리이다.
어플리케이션 개발자가 서비스에 로우레벨 코드 대신 쉽게 HTTP 요청을 보낼 수 있게 해준다.
Spring Cloud OpenFeign 사용해보기
의존성 관리 - build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
FeignClient 사용 설정
@SpringBootApplication
@EnableFeignClients
public class FeignsampleApplication {
public static void main(String[] args) {
SpringApplication.run(FeignsampleApplication.class, args);
}
}
- @EnableFeignClient 어노테이션을 사용하여 FeignClient 사용을 명시
Custom Feign Client 추가
@FeignClient(value = "jplaceholder", url = "<https://jsonplaceholder.typicode.com/>")
public interface CustomFeignClient {
@GetMapping(value = "/posts")
List getPosts();
@GetMapping(value = "/posts/{postId}", produces = "application/json")
Post getPostById(@PathVariable("postId") Long postId);
}
- @FeignClient
- value : 요청을 보낼 클라이언트의 이름
- url : 요청을 보낼 클라이언트의 URL
- @GetMapping
- 요청할 HTTP 메서드. 샘플에서는 GET 요청 구현
- 각각의 엔드포인트에 따른 파라미터를 어노테이션 방식으로 구현 가능
Response 객체 설정
@Data
public class Post {
Long userId;
Long id;
String title;
String body;
}
Controller 구현
@RestController
public class CustomFeignController {
private CustomFeignClient customFeignClient;
@GetMapping("/posts")
public List<Post> getPosts() {
return customFeignClient.getPosts();
}
@GetMapping("/posts/{id}")
public Post getPost(@PathVariable Long id) {
return customFeignClient.getPostById(id);
}
}
호출 결과 확인
$ curl <http://localhost:8080/posts>
// Res
[
{"userId":1,"id":1,"title":"sunt aut facere repellat provident occaecati excepturi optio reprehenderit","body":"quia et suscipit\\nsuscipit recusandae consequuntur expedita et cum\\nreprehenderit molestiae ut ut quas totam\\nnostrum rerum est autem sunt rem eveniet architecto"},
{"userId":1,"id":2,"title":"qui est esse","body":"est rerum tempore vitae\\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\\nqui aperiam non debitis possimus qui neque nisi nulla"},
...
]
$ curl <http://localhost:8080/posts/1>
// Res
{"userId":1,"id":1,"title":"sunt aut facere repellat provident occaecati excepturi optio reprehenderit","body":"quia et suscipit\\nsuscipit recusandae consequuntur expedita et cum\\nreprehenderit molestiae ut ut quas totam\\nnostrum rerum est autem sunt rem eveniet architecto"}
Resources
반응형
'Spring Cloud' 카테고리의 다른 글
Spring Cloud Eureka 사용해보기 (0) | 2024.05.20 |
---|---|
Spring Cloud Sleuth이란 무엇인가 (0) | 2024.05.20 |
Spring Cloud Circuit Breaker 사용해보기 (0) | 2024.05.10 |
Spring Cloud Config 사용해보기 (0) | 2024.05.10 |
Spring Cloud Gateway 사용해보기 (0) | 2024.05.10 |