본문 바로가기

면접준비

Rest Client란?

- REST Client란?
- Rest API 서버에 HTTP 요청을 보낼 수 있는 클라이언트 툴 또는 라이브러리를 의미함. ( 예를들면 Postman -> GUI 갖춰진 Rest Client)
- RestTemplate
- Java에서 사용할 수 있는 HTTP Client 라이브러리 - java.net.HttpURLConnection, Apache HttpComponents, OkHttp 3, Netty 등
- 스프링에서 위 HTTP Client 라이브러리 중 하나를이용해서 다른 Backend 서버에 HTTP요청을 보낼 수 있는 Rest Client API -> RestTemplate
- 순서
- RestTemplate 객체 생성 -> 의존 라이브러리 (dependencies) 추가 -> URI 생성 (HTTP Request 를 전송할 Rest 엔드포인트의 URI) -> 요청 전송
- REST Client 장점
    - API 테스트 용이성 - 빠르게 API 엔드포인트를 테스트.
    - 개발 효율성 - API 통합 과정을 간소화.
    - 디버깅 - API 요청과 응답을 쉽게 검사.
    - 문서화 - API 호출을 저장하고 공유.
-  
- Spring 에서의 Rest Client 와 일반적인 Rest Client의 차이점
    - 통합성
        - Spring Rest Client : Spring의 다른 기능들과 함께 사용하기 좋음.
        - Rest Client : 독립적으로 사용. 특정 프레임워크와의 통합이 필요하지 않음.
    - 구현
        - Spring Rest Client : 주로 RestTemplate 와 WebClient(비동기 및 리엑티프 프로그래밍을 지원) 를 사용
        - Rest Client : 다양한 구현체가 있으며 언어 및 플랫폼에 따라 다르게 사용. ( ex. Java - HttpClient, Python - Requests)
    - 설정
        - Spring Rest Client : Spring 의 설정방식을 따르고 Bean으로 등록하여 애플리케이션 전체에서 사용 가능
        - Rest Client : 인스턴스를 직접 생성하고 설정
    - 예외처리
        - Spring Rest Client : Spring 예외처리 메커니즘을 사용
        - Rest Client : 각 라이브러리 마다 고유한 예외처리방식을 사용
    - 테스트 용이성
        - Spring Rest Client : Spring의 테스트 프로엠워크와 통합되어있어 모킹 및 테스트 용이
        - Rest Client : 테스트를 위해 추가적인 설정 및 라이브러리 필요
    - 보안
        - Spring Rest Client : Spring Security 와 통합되어 인증 및 권한부여 진행
        - Rest Client : 별도로 구현 필요
- 즉, Spring 의 RestClient 는 Spring의 다른 기능들과 잘 통합되어 사용하기 편리하고, 일반 RestClient는 범용적이고 독립적으로 사용하기 좋음.