๐Ÿ“Œ ์„œ๋น„์Šค๋‹จ์— ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉ

public class MyService {

    private final WebClient webClient;

    public MyService(WebClient.Builder webClientBuilder) {
        this.webClient = webClientBuilder.baseUrl("https://test.example.com").build();
    }

    // get ์š”์ฒญ
    public Mono<String> fetchData() {
        return webClient.get()
                .uri("/data")
                .retrieve()
                .bodyToMono(String.class);
    }
    
    // post ์š”์ฒญ
    public Mono<String> sendData(String data) {
        return webClient.post()
                .uri("/endpoint")
                .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
                .body(BodyInserters.fromValue(data))
                .retrieve()
                .bodyToMono(String.class);
    }
    
}

 

  • WebClient.Builder๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ baseUrl ์„ค์ •
  • Mono<String>์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
  • GET ๋ฐ POST ๋ฉ”์„œ๋“œ ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

 

 

๐Ÿ“Œ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ง์ ‘ ์‚ฌ์šฉ  - post

public class Contoller {
  
  public Map<String, Object> fetchData(String uri, Map<String, Object> params) {

    String url = "https://test.example.com";
    MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();

    try {
      for(Map.Entry<String, Object> entry: params.entrySet()) {
        String key = entry.getKey();
        String value = entry.getValue().toString();
        formData.add(key, value);
      }

      WebClient webClient = WebClient.create(uri);

      // ์š”์ฒญ ๋นŒ๋“œ
      Mono<String> response = webClient
        .method(HttpMethod.POST)
        .uri(uri)
        .contentType(MediaType.APPLICATION_FORM_URLENCODED)
        .body(BodyInserters.fromFormData(formData))
        .retrive()
        .bodyToMono(String.class);

      String responseBody = response.block();

      ObjectMapper objectMapper = new ObjectMapper();
      Map<String, Object> result = objectMapper.readValue(responseBody, new TypeReference<Map<String, Object>>() {})

      return result;

    } catch (Exception e) {
      LOGGER.error("์—๋Ÿฌ๋กœ๊ทธ ์ถœ๋ ฅ = ", e);
      throw new Exception();  // ์ต์…‰์…˜
    }
    
  }

}

 

  • WebClient.create()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
  • BodyInserters.fromFormData()๋กœ Form ๋ฐ์ดํ„ฐ ์ „์†ก
  • ObjectMapper๋ฅผ ์‚ฌ์šฉํ•ด **์‘๋‹ต(JSON)**์„ Map<String, Object>๋กœ ๋ณ€ํ™˜

 

 

+ Recent posts