https://github.com/mango606/spring-proficient-week2
Spring Master 4주차
https://github.com/mango606/spring-proficient-week2
monorepo resttemplate
Last synced: 2 months ago
JSON representation
Spring Master 4주차
- Host: GitHub
- URL: https://github.com/mango606/spring-proficient-week2
- Owner: mango606
- Created: 2025-02-10T03:34:41.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-02-10T04:06:00.000Z (11 months ago)
- Last Synced: 2025-02-10T04:27:28.871Z (11 months ago)
- Topics: monorepo, resttemplate
- Homepage:
- Size: 0 Bytes
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# RestTemplate
## 1. RestTemplate 소개
`RestTemplate`은 Spring에서 제공하는 HTTP 클라이언트 툴로, 서버에서 다른 서버로 요청을 보낼 수 있도록 도와줍니다. 클라이언트(브라우저)로부터 요청을 받는 것이 아니라, 서버가 다른 서버에게 요청을 보내는 서버 투 서버(Server To Server) 통신을 간편하게 구현할 수 있습니다.
### 서버 투 서버 통신의 필요성
개발을 진행하면서 라이브러리만으로 구현이 어려운 기능들이 많이 있습니다. 예를 들어, 회원가입 시 사용자의 주소 정보를 받아야 할 때, 주소를 검색하는 기능을 직접 구현하면 많은 시간과 비용이 소모됩니다. 이런 경우, 카카오에서 제공하는 [주소 검색 API](https://postcode.map.daum.net/guide)와 같은 외부 API를 활용할 수 있습니다.
서버가 클라이언트의 역할을 하여 다른 서버에게 요청을 보내는 경우, `RestTemplate`을 사용하여 간편하게 구현할 수 있습니다.
## 2. RestTemplate 사용 방법
다음과 같이 프로젝트 2개를 만들어서 두 개의 서버를 동시에 실행하여 서로 통신할 수 있게 설정합니다.
1. **클라이언트 서버**: 8080 포트에서 실행
2. **대상 서버**: 7070 포트에서 실행
### Get 요청 방법
- **클라이언트 입장의 서버:** 요청을 보낼 때, `RestTemplate`을 주입받아 사용합니다. `UriComponentsBuilder`를 이용하여 요청 URI를 구성하고, `getForEntity()` 메서드로 요청을 보내어 응답을 받습니다.
- **서버 입장의 서버:** 요청에 따라 데이터를 조회하고 응답합니다.
### Post 요청 방법
- **데이터 전송:** `postForEntity()` 메서드를 사용하여 데이터를 POST 방식으로 전송합니다. 요청 URI는 `UriComponentsBuilder`로 동적으로 생성하며, 요청과 함께 객체를 전송합니다.
- **응답 처리:** 서버는 전송된 데이터를 받아 처리하고, 필요한 객체를 응답합니다.
### Exchange 메서드 사용
- **복잡한 요청 처리:** `exchange()` 메서드를 사용하면, 요청 헤더에 정보를 추가하거나 다양한 HTTP 메서드를 사용하여 보다 복잡한 요청을 처리할 수 있습니다.
- **응답 처리:** 전달받은 요청에 대해 서버는 헤더와 바디 정보를 확인하고 적절한 응답을 제공합니다.
## 사용 예시
- **단일 아이템 조회:** 클라이언트는 특정 조건에 맞는 아이템을 조회하여 받아옵니다.
- **리스트 조회:** 클라이언트는 아이템 리스트를 조회하며, 서버는 조건에 맞는 아이템들을 JSON 형태로 반환합니다. 클라이언트는 이 JSON을 객체 리스트로 변환하여 사용합니다.
## 기술 스택
- Spring Boot
- RestTemplate
- JSON