RestTemplate의 Post 요청

금은체리·2023년 11월 17일
0

Spring

목록 보기
25/49

Post 요청 방법

Client 입장 서버

  1. 요청 받은 검색어를 Query String 방식으로 Server 입장의 서버로 RestTemplate를 사용하여 요청
public ItemDto postCall(String query) {
    // 요청 URL 만들기
    URI uri = UriComponentsBuilder
            .fromUriString("http://localhost:7070")
            .path("/api/server/post-call/{query}")
            .encode()
            .build()
            .expand(query)
            .toUri();
    log.info("uri = " + uri);

    User user = new User("Robbie", "1234");

    ResponseEntity<ItemDto> responseEntity = restTemplate.postForEntity(uri, user, ItemDto.class);

    log.info("statusCode = " + responseEntity.getStatusCode());

    return responseEntity.getBody();
}
  • UriComponentsBuilder의 expand를 사용하여 {query} 안의 값을 동적으로 처리 가능
  • RestTemplate의 postForEntity는 Post 방식으로 해당 URI의 서버에 요청 진행
    • restTemplate.postForEntity(uri, user, ItemDto.class);
    • 첫 번째 파라미터에는 URI
    • 두 번째 파라미터에는 HTTP Body에 넣어줄 데이터를 넣음
      • Java 객체를 두 번째 파라미터에 넣으면 자동으로 JSON 형태로 변환됨
    • 세 번째 파라미터에는 전달 받은 데이터와 매핑하여 인스턴스화할 클래스의 타입을 주면 됨

Server 입장 서버

  1. Server 입장의 서버에서 itemList를 조회하여 요청 받은 검색어에 맞는 Item 반환
public Item postCall(String query, UserRequestDto userRequestDto) {
    System.out.println("userRequestDto.getUsername() = " + userRequestDto.getUsername());
    System.out.println("userRequestDto.getPassword() = " + userRequestDto.getPassword());

    return getCallObject(query);
}
  • 전달 받은 HTTP Body의 User 데이터를 확인함



profile
전 체리 알러지가 있어요!

0개의 댓글