[TIL] 8월 19일

yeon·2021년 8월 19일
0

timeout을 지정하여 WebClient 인스턴스 생성하기

@Bean
public WebClient webClient() {
    HttpClient httpClient = HttpClient.create()
            .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000)
            .responseTimeout(Duration.ofMillis(5000))
            .doOnConnected(connection ->
                    connection.addHandlerLast(new ReadTimeoutHandler(5000, TimeUnit.MICROSECONDS))
                            .addHandlerLast(new WriteTimeoutHandler(5000, TimeUnit.MICROSECONDS)));

    return WebClient.builder()
            .clientConnector(new ReactorClientHttpConnector(httpClient))
            .build();
}

참고: https://www.baeldung.com/spring-5-webclient

WebClient 사용 시 Not enough variables available to expand 에러 발생

UriComponentsBuilder를 사용하면 된다. (Baeldung 참고)

UriComponentsBuilder builder = UriComponentsBuilder.fromUriString("https://nid.naver.com/oauth2.0/authorize")
                .queryParam("response_type", RESPONSE_TYPE)
                .queryParam("client_id", clientId)
                .queryParam("redirect_uri", REDIRECT_URI);

String code = webClient.mutate()
                .build()
                .get()
                .uri(builder.build().toUri())
                .retrieve()
                .bodyToMono(String.class)
                .block();

오늘 한일

  • 네이버로부터 code를 받고 access token을 받고 userInfo를 얻는 것을 테스트로 하나의 흐름으로 짜보려고 했으나, code를 받으려면 유저가 브라우저에서 네이버 로그인을 해야해서 테스트를 짤 수 없다. 한 세시간정도 WebClient로 redirect url로 바로 넘어가는 법도 찾아보고 시도하다가 뒤늦게 이 사실을 깨달았....
  • WebClient를 처음 사용해봐서 익숙치 않은데 공식문서랑 자료들 찾아보면서 구현하니깐 재밌다. 사용하다보면 또 새로운 에러들을 마주하겠지...😵
  • 네이버 oauth 구현하는데 다른 oauth 로그인까지 고려해서 코드를 어떻게 더 구조적으로 잘 짤수 있을까 고민하는데 시간이 오래 걸린다.
  • 백기선님 자바스터디 6주차 상속 자료 정리
  • 코테 문제 풀이
    • DFS, BFS 문제를 풀어보고자 백준 미로찾기 문제를 시도했는데 풀지 못했다.... 계속 시도하다보면 푸는 날이 오겠지
    • 권오흠님 알고리즘 강의 다시 듣기

0개의 댓글