20220708 TIL

2022. 7. 9. 04:02·Memorization

WebClient를 버려야 하는걸까? 😢

러닝커브가 너무 높다 허허;;

그래서 구글링하다가 찾은

Lazy Subscribe를 통한 Stream 또는 Iterable 로 변환 시킬 수 있는 Flux.toStream() , Flux.toIterable() 함수를 이용했다

내일은 위의 방식으로 구현한 WebClient와 RestTemplate을 비교해보고자 한다.

둘 중 효율이 높은 쪽을 선택할 것 같다😔

 

WebClient로 호출한 REST API

public LocationKeywordSearchForm giveLatLngByAddressRest(String address) throws JsonProcessingException {
        WebClient client = WebClient.builder()
                .baseUrl("https://dapi.kakao.com/v2/local/search/keyword.json")
                .defaultUriVariables(Collections.singletonMap("url", "https://dapi.kakao.com/v2/local/search/keyword.json"))
                .clientConnector(new ReactorClientHttpConnector(httpConfig.httpClient())) // 위의 타임아웃 적용
                .build();
        return client.get().uri(uriBuilder
                        -> uriBuilder.queryParam("query", address)
                        .queryParam("page", 1)
                        .queryParam("size", 1)
                        .build())
                .accept(MediaType.APPLICATION_JSON)
                .header("Authorization", "KakaoAK XXX")
                .retrieve().bodyToMono(LocationKeywordSearchForm.class).log().flux()
                .toStream()
                .findFirst()
                .orElse(null);
    }

 

RestTemplate로 호출한 REST API

public LocationKeywordSearchForm giveLatLngByAddressRest(String address) throws JsonProcessingException {
    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(List.of(MediaType.APPLICATION_JSON));
    headers.setContentType(MediaType.APPLICATION_JSON);
    headers.set("Authorization", "KakaoAK XXX");
    URI uri = UriComponentsBuilder
            .fromUriString("https://dapi.kakao.com/v2/local/search/keyword.json")
            .queryParam("query", address)
            .queryParam("page",1)
            .queryParam("size",1)
            .encode()
            .build()
            .toUri();

    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity<LocationKeywordSearchForm> resultRe = restTemplate.exchange(
            uri,HttpMethod.GET,new HttpEntity<>(headers),LocationKeywordSearchForm.class
    );
    return resultRe.getBody();
}
저작자표시 비영리 변경금지 (새창열림)

'Memorization' 카테고리의 다른 글

20220711 TIL  (0) 2022.07.12
20220710 TIL&WIL  (0) 2022.07.11
20220707 TIL  (0) 2022.07.08
20220705 TIL  (0) 2022.07.06
20220704 TIL  (0) 2022.07.05
'Memorization' 카테고리의 다른 글
  • 20220711 TIL
  • 20220710 TIL&WIL
  • 20220707 TIL
  • 20220705 TIL
코드파고
코드파고
  • 코드파고
    Digging Code
    코드파고
  • 전체
    오늘
    어제
    • 분류 전체보기 (99)
      • Memorization (12)
      • Spring (18)
      • Java (1)
      • Algorithm (40)
      • Server (2)
      • DB (0)
      • CS (0)
      • CI & CD (4)
      • Architecture (0)
      • Design Patterns (0)
      • Study (1)
      • Book (9)
        • DEV (7)
        • Non-DEV (0)
      • Infra (1)
        • Kafka (6)
        • AWS (4)
      • TroubleShooting (1)
        • Etc (1)
      • Tools (0)
  • 블로그 메뉴

    • 홈
    • Github
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SpringFramework
    Spring Boot
    architecture
    알고리즘
    clean architecture
    Clean Code
    Spring독학
    클린아키텍쳐
    Spring
    헥사고날아키텍쳐
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
코드파고
20220708 TIL
상단으로

티스토리툴바