open api의 샘플 코드를 webClient 적용한 형태로 바꾸는 방법을 보던 중
파라미터 인코딩을 하는 과정이 있어서 자세히 알아보고싶었다.
인코딩이란??
어떤 정보를 특수한 목적을 가지고 다른 형태로 변환하는 행위
webClient를 사용해서 외부 api를 호출 할 때에 인코딩 하지 않고 그냥 호출하게 되면 api 키가 달라지는 경우가 생길 수 있다고 한다
WebClient의 인코딩 방식은 UriComponentsBuilder#encode()라는 옵션을 사용하여 url의 예약 문자들을 치환하는 방식인데, 이 방식으로 인해 키 값이 달라지면서 문제가 발생하는 것
그 경우를 해결하기 위해서는
DefaultUriBuilderFactory factory = new
DefaultUriBuilderFactory(BASE_URL);
그 다음엔 해당 인스턴스를 활용해서 인코딩 Mode를 설정한다
factory.setEncodingMode(DefaultUriBuilderFactory.EndingMode.VALUES_ONLY);
DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory();
factory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.NONE);
인코딩 모드 종류들
uri의 빌드 설정을 완료했다면 webClient의 인스턴스를 생성할 때 그 UriBuilder로 uri를 만든다고 설정하기
WebClient wc =
WebClient.builder().uriBuilderFactory(factory).baseUrl(BASE_URL).build();