Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

WebClientBuilder används för att skapa upp en REST-klient (WebClient):

Code Block
languagejava
WebClient webClient = new WebClientBuilder()
    .withBaseUrl("https://api.github.com/") [1]
    .withLogbook(...)                       [2]
    .withOAuth2Client(...)                  [3]
    .withBasicAuthentication(...)           [4]
    .withConnectTimeout(...)                [5]
    .withReadTimeout(...)                   [6]
    .build();                               [7]

...
String user = "Sundsvallskommun";
Mono<List<Repo>> repos = webClient.get()
    .uri("/users/{user}/repos", user)
    .retrieve()
    .onStatus(HttpStatus::is4xxClientError, response -> ...)
    .onStatus(HttpStatus::is5xxServerError, response -> ...)
    .bodyToMono(new ParameterizedTypeReference<List<Repo>>() {});
...

...

Code Block
languagejava
@Bean
ClientRegistration clientRegistration() {
    return ClientRegistration.withRegistrationId("someId")
        .clientId("someClientId")
        .clientSecret("someClientSecret")
        .tokenUri("https://somehost.com/token")
        .authorizationGrantType("client_credentials"AuthorizationGrantType.CLIENT_CREDENTIALS)
        .build();
}

[4] Om angiven (användarnamn och lösenord) sätts Basic-autentisering upp.
[5] Anger connect timeout. Default-värde är 10 sekunder.
[6] Anger read timeout. Default-värde är 60 sekunder.
[7] Skapar själva REST-klienten.

(info) WebClient är i grundutförande reaktiv (asynkron) med stöd för Project Reactor:s Mono och Flux. Spring Framework hanterar detta sömlöst sett till att exponerade endpoints kan returnera värden av de typerna utan att det egentligen blir någon skillnad för anropande klienter, men i det fall att man vill använda WebClient på ett synkront sätt kan man använda .block(), vilket då i exemplet ovan skulle bli:

...