Spring Boot 4-mikrotjenester og REST-API'er · Lektion

WebClient til reactive kald

Kald andre services reaktivt.

Lektion 3 af 413 trin

WebClient til reactive kald er en gratis Spring Boot 4-mikrotjenester og REST-API'er-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Spring Boot 4-mikrotjenester og REST-API'er, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Spring Boot 4-mikrotjenester og REST-API'er-kurset indeholder 4 lektioner i alt.

Hvad er WebClient

WebClient er den ikke-blokerende, reaktive HTTP-klient i Spring WebFlux. Den erstatter den blokerende RestTemplate i reaktive apps.

  • Returnerer Mono- eller Flux-svar
  • Er fuldt ikke-blokerende i Nettys hændelsesløkke

Oprettelse af en WebClient

Opret en instans med en basis-URL ved hjælp af builderen.

WebClient client = WebClient.builder()
    .baseUrl("https://api.example.com")
    .build();

En simpel GET

Kæd get(), uri() og retrieve() sammen, og konvertér derefter bodyen til en udgiver.

Mono<User> user = client.get()
    .uri("/users/{id}", 1)
    .retrieve()
    .bodyToMono(User.class);
user.subscribe(System.out::println);

Hentning af en samling

Brug bodyToFlux, når svaret er et JSON-array.

Flux<User> users = client.get()
    .uri("/users")
    .retrieve()
    .bodyToFlux(User.class);

Afsendelse af en POST-body

Brug post() og bodyValue() til at sende en requestbody.

Mono<User> created = client.post()
    .uri("/users")
    .bodyValue(new User("Alice"))
    .retrieve()
    .bodyToMono(User.class);

Tilføjelse af headers

Tilføj headers pr. forespørgsel eller globalt på builderen.

Mono<String> result = client.get()
    .uri("/data")
    .header("Authorization", "Bearer token123")
    .retrieve()
    .bodyToMono(String.class);

Håndtering af fejlstatusser

retrieve() udløser som standard en fejl ved 4xx/5xx. Tilpas dette med onStatus.

Mono<User> user = client.get()
    .uri("/users/{id}", 99)
    .retrieve()
    .onStatus(HttpStatusCode::is4xxClientError,
        resp -> Mono.error(new RuntimeException("Not found")))
    .bodyToMono(User.class);

Sammensætning af kald med flatMap

Fordi resultaterne er reaktive, kan du kæde afhængige HTTP-kald sammen uden blokering.

Mono<Order> order = client.get()
    .uri("/users/{id}", 1)
    .retrieve()
    .bodyToMono(User.class)
    .flatMap(u -> client.get()
        .uri("/orders?userId={id}", u.getId())
        .retrieve()
        .bodyToMono(Order.class));

Timeouts

Anvend en timeout med operatoren timeout, så langsomme upstreams fejler hurtigt.

Mono<User> user = client.get()
    .uri("/users/1")
    .retrieve()
    .bodyToMono(User.class)
    .timeout(Duration.ofSeconds(3));

Nyt forsøg ved fejl

Brug operatoren retry til at abonnere igen ved fejl et fast antal gange.

Mono<User> user = client.get()
    .uri("/users/1")
    .retrieve()
    .bodyToMono(User.class)
    .retry(2);

Registrering som en Bean

Konfigurér en delt WebClient-bean, så den kan injiceres overalt.

@Bean
public WebClient webClient() {
    return WebClient.builder()
        .baseUrl("https://api.example.com")
        .build();
}

Hurtigt tjek

Test din forståelse af WebClient.

Opsummering

Du har lært at foretage ikke-blokerende HTTP-kald med WebClient:

  • Byg med WebClient.builder().baseUrl(...)
  • retrieve().bodyToMono/bodyToFlux til svar
  • onStatus til fejlhåndtering
  • timeout og retry til robusthed
Gratis at komme i gang

Lær Java med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
24
Lektioner
93

Ofte stillede spørgsmål

Er lektionen “WebClient til reactive kald” gratis?

Ja — hele teksten til “WebClient til reactive kald” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Spring Boot 4-mikrotjenester og REST-API'er-kurset, skal du opgradere til CoddyKit PRO. Spring Boot 4-mikrotjenester og REST-API'er-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “WebClient til reactive kald”?

Kald andre services reaktivt. Du øver dig i Spring Boot 4-mikrotjenester og REST-API'er med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Spring Boot 4-mikrotjenester og REST-API'er?

Der kræves ingen tidligere erfaring. Spring Boot 4-mikrotjenester og REST-API'er på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “WebClient til reactive kald”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Spring Boot 4-mikrotjenester og REST-API'er-lektion?

Ja. Alle Spring Boot 4-mikrotjenester og REST-API'er-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Grundlæggende Mono og Flux
  2. Reactive controllers
  3. WebClient til reactive kald
  4. Backpressure og operators
← Tilbage til Spring Boot 4-mikrotjenester og REST-API'er