본문 바로가기
코딩일기/날씨앱 만들기 프로젝트

[Spring Boot] WebClient 파라미터 인코딩 하는법

by 욱파이어니어 2021. 10. 24.
728x90
반응형

WebClient를 사용해서 그냥 호출하게 되면 인코딩을 하지 않아 API 키가 달라지는 경우가 생길수가 있다.

 

나같은 경우에 그 문제 때문에 골머리를 앓았는데 아래와 같은 방법으로 해결했다.

 

일단 UriBuild 설정을 해주는 DefaultUriBuilderFactory Class의 인스턴스를 생성해준다.

 

DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory(BASE_URL);

 

그 다음엔 해당 인스턴스를 활용하여서 인코딩 Mode를 설정한다.

factory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.VALUES_ONLY);

 

인코딩 모드에는 아래와 같은 종류가 있다.

 

  • TEMPLATE_AND_VALUES: URI 템플릿을 먼저 인코딩하고 URI 변수를 적용할 때 인코딩 한다.
  • VALUES_ONLY: URI 템플릿을 인코딩하지 않고 URI 변수를 템플릿에 적용하기 전에 엄격히 인코딩한다.
  • URI_COMPONENT: URI 변수를 적용한 후에 URI 컴포넌트를 인코딩한다.
  • NONE: 인코딩을 적용하지 않는다.

 

위 설명에서 URI 템플릿에 대한 설명은 아래 링크를 통해서 확인해보면 될것 같다.

https://velog.io/@geesuee/Spring-URI-Template

 

[Spring] URI Template

오늘은 URI에서 고정적인 값과 가변적인 값을 구분하여 템플릿으로 지정, 사용하는 URI Template에 대해 알아보겠습니다.

velog.io

 

이렇게 URI 의 빌드 설정을 완료 하였다면 이제 WebClient 의 인스턴스를 생성할때 해당 UriBuilder로 uri를 만든다고

설정을 한다.

 

WebClient wc = WebClient.builder().uriBuilderFactory(factory).baseUrl(BASE_URL).build();
반응형