WebClient

RestTemplate restTemplate = new RestTemplate();
String apiUrl = "<https://nickname.hwanmoo.kr/?format=json&count=1>";
ResponseEntity<String> response = restTemplate.getForEntity(apiUrl, String.class);
WebClient webClient = WebClient.create(); // 별도의 설정 없이 생성
String apiUrl = "<https://nickname.hwanmoo.kr/?format=json&count=1>";

String response = webClient.get()
				.uri(apiUrl)
        .retrieve() // ClientResponse 개체의 body를 받아 디코딩하고, 사용자가 사용할 수 있도록 미리 만든 개체를 제공하는 간단한 메소드
        .bodyToMono(String.class) // retrieve에서 응답을 받아오는 방법 설정 - 해당 설정은 헤더를 제외한 body 값만 받음
        .block(); // 동기식 스타일 일반 객체로 받을 수 있음

[Spring] WebClient 사용방법 가이드

Spring WebClient, 어렵지 않게 사용하기

URI VS. URL

WebClient.create("<http://localhost:8080>");
String apiUrl = "<https://nickname.hwanmoo.kr/?format=json&count=1>";
WebClient webClient = WebClient.create(apiUrl);

String response = webClient.get()
//				.uri(apiUrl)
        .retrieve() // ClientResponse 개체의 body를 받아 디코딩하고, 사용자가 사용할 수 있도록 미리 만든 객체를 제공하는 간단한 메소드
        .bodyToMono(String.class) // retrieve에서 응답을 받아오는 방법 설정 - 해당 설정은 헤더를 제외한 body 값만 받음
        .block(); // 동기식 스타일 일반 객체로 받을 수 있음

JSON → String

// JSON 형식의 문자열인 response를 JsonNode로 파싱하기 위한 과정
ObjectMapper objectMapper = new ObjectMapper();
// String response를 JsonNode로 변경
JsonNode jsonNode = objectMapper.readTree(response);

// "words" 키에 해당하는 값을 추출
JsonNode wordsNode = jsonNode.get("words");

log.info(String.valueOf(wordsNode)); // ["Fun cool sexy 더블모니터"]

// JsonNode를 String으로 변환
String firstWord = wordsNode.get(0).asText(); // toString()과 동일하지만, asText는 JsonNode의 추상 메소드
// toString() 결과 : "\\"보청기를 낀 미소천사\\"" -> 제대로 실행되지 않음
// DB에서 String으로 한 번 더 감싸진 것 확인 가능

log.info(String.valueOf(wordsNode.get(0))); // "Fun cool sexy 더블모니터"