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
이렇게 URI 의 빌드 설정을 완료 하였다면 이제 WebClient 의 인스턴스를 생성할때 해당 UriBuilder로 uri를 만든다고
설정을 한다.
WebClient wc = WebClient.builder().uriBuilderFactory(factory).baseUrl(BASE_URL).build();
반응형
'코딩일기 > 날씨앱 만들기 프로젝트' 카테고리의 다른 글
[Spring Boot] MyBatis를 통한 MySQL 연동 (maven) (0) | 2021.11.12 |
---|---|
[Spring Boot] properties 를 통해서 키 값 숨기기 (0) | 2021.10.24 |
[Spring Boot] WebClient 이용한 API 호출 (0) | 2021.10.24 |
[Spring Boot] Spring Boot(STS) 설치 및 프로젝트 생성 방법 (0) | 2021.10.24 |
[Spring] Spring 설치 및 MVC 프로젝트 구조 설명 Part2 (0) | 2021.10.15 |