멋사 Backend 52일차 🦁

신재원·2023년 7월 5일

📗 Spring

  • 현업에서 볼수도 있는, Server Side Event, Web Socket 방식 등등의 서비스의 핵심은 결국 C R U D 이라고 합니다.
    (Create, Read, Update, Delete)

🌈 RestTemplate vs WebClient

  • 지금 까지의 내용은 HTTP 요청을 받는 입장이였습니다.

실제 서비스에서는 외부 다른 서비스의 기능을 활용하기 위해서라도
HTTP 요청을 보내는 경우도 존재합니다.
EX : 평점을 기준으로 영화를 추천하는 서비스 등

RestTemplate 란?

  • Spring 에서 HTTP 요청을 보낼때 주로 사용하는 방식 이였습니다.
    특징으로는 동기식으로 작동하며 멀티 쓰레드 방식을 사용 합니다.
    (Get, Post, Delete, Put 메소드 지원)

▶ GET 요청

  • RestTemplate 객체를 생성합니다.
  • GetDto 클래스를 만들어줌으로써, JSON 데이터로 반환합니다.

RestTemplate 는 비동기 호출을 할수 없습니다.

WebClient 란?

  • 반응형 웹 개발의 수요에 의해 등장한 비동기 호출방식 (동기 호출도 가능)

WebClient 를 사용하기 위해서는 아래의 의존성을 추가해줘야 합니다.

implementation 'org.springframework.boot:spring-boot-starter-webflux'

  • Builder 패턴처럼 사용할수 있습니다.
  • .retrieve : body를 바로 가져온다는 메소드 입니다.
  • .block 을 사용하면 RestTemplate 처럼 동기 호출로 사용 한다는 것입니다.

동기, 비동기 이란 ❓

동기

  • 요청을 보내고 해당 요청에 대한 응답을 받아야 다음 동작을 실행

비동기

  • 요청을 보내고 해당 요청에 대한 응답에 관계없이 다음 동작 실행
    ➡ 요청을 보낸 동작을 기다리지 않고, 동시에 다른 작업을 할수 있어 작업의 속도가 빠릅니다.

결론

기존의 RestTemplate 방식을 사용했더라면,
최악의 경우 WebClient 로 변경해야되는 결과를 초래할수도있습니다.
새롭게 시작하는 프로젝트에서는 WebClient 방식을 권장 한다고 합니다.

Rest Api 개인 프로젝트 제출

(API 문서화 명세서, Read.me 작성 제출)

0개의 댓글