[TIL] RestTemplate ?

정석·2024년 8월 20일

TIL

목록 보기
23/40
post-thumbnail

<예시 상황>
7070은 서버 포트 / 8080은 클라이언트 포트

  • 서버의 /api/server/get-call-objRequestParam 으로 "query" 에 대해 기입 받은 내용을
    get 메서드로 보내 값을 가져오려 한다.

우선 Di 의존성 주입부터,

1. RestTemplate 의존성 주입


다른 애들과는 다르게 RestTemplateBuilder 라는 클래스를 통해 build() 메서드로 생성한다.

2. Client Service 코드 (Get 방식)


자 일단, Uri 를 생성해서 해당 Uri 와 서버로 보내서 받고자 하는 자료형을 적어 getForEntity 로 보내면 7070 포트의 Uri 에 Get 메서드가 전송된다.

사진 상 ItemDto 로 반환 받고자 했다.

2.1 Server 코드

사실상 간단하게 들어오는 Controller 구현해주고, 해당 로직 처리를 위한 Service 구현을 한다.

유념해야 할 점은 너무 당연하지만

Client 에서 보내는 형식과 Server에서 받는 형식,
Server에서 보내는 형식과 Client 에서 받는 형식을 맞추자.


3. Client Service 코드 (Post 방식)


Get 방식과 비슷하지만 다른 점은 postForEntity 메서드를 통해 보내야 한다.
이번엔 바디에 값이 잘 들어갔는지 보기 위해 User 의 정보도 넣어본다.

3.1 Server 코드


뭐 너무 당연하고 위와 비슷하다.


4. Client Service 코드 (Exchange 방식)

새롭게 달라진 것은 header 에 값을 추가로 넣는다.
HTTP 메서드, 헤더, URI 변수 등을 세부적으로 설정할 수 있는 특징이 있다.

여기서는 토큰 값헤더에 넣었고 JSONObject 를 아래와 같이 활용했다.

응답 받은 객체 자체가 json 형태를 가진 리스트 형태라 보기 힘들다.

따라서 해당 라이브러리를 통해 키 값으로 새로운 JSONArray 라는 리스트에 담을 수 있게 만들어져 있고,
해당 리스트에 담기면 ArrayList 와 같이 사용할 수 있다.

0개의 댓글