Spring Boot 4-mikrotjänster och REST API:er · Lektion

WebClient för reaktiva anrop

Anropa andra tjänster reaktivt.

Lektion 3 av 413 steg

WebClient för reaktiva anrop är en gratis lektion i Spring Boot 4-mikrotjänster och REST API:er på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Spring Boot 4-mikrotjänster och REST API:er, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Spring Boot 4-mikrotjänster och REST API:er innehåller totalt 4 lektioner.

Vad är WebClient

WebClient är den icke-blockerande, reaktiva HTTP-klienten i Spring WebFlux. Den ersätter den blockerande RestTemplate i reaktiva appar.

  • Returnerar Mono- och Flux-svar
  • Är helt icke-blockerande på Nettys event loop

Bygga en WebClient

Skapa en instans med en bas-URL med hjälp av buildern.

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

En enkel GET

Kedja get(), uri() och retrieve(), och konvertera sedan bodyn till en utgivare.

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

Hämta en samling

Använd bodyToFlux när svaret är en JSON-array.

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

Skicka en POST-body

Använd post() och bodyValue() för att skicka en request body.

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

Lägga till headers

Lägg till headers per förfrågan eller globalt i buildern.

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

Hantera felstatusar

retrieve() kastar som standard ett undantag vid 4xx/5xx. Anpassa beteendet 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);

Kedja anrop med flatMap

Eftersom resultaten är reaktiva kan du kedja beroende HTTP-anrop utan att blockera.

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));

Tidsgränser

Använd operatorn timeout för att ange en tidsgräns, så att långsamma upstream-källor misslyckas snabbt.

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

Försöka igen vid fel

Använd operatorn retry för att prenumerera på nytt vid fel ett bestämt antal gånger.

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

Registrera som en Bean

Konfigurera en delad WebClient-bean så att den kan injiceras var som helst.

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

Snabb kontroll

Testa din förståelse av WebClient.

Sammanfattning

Du har lärt dig att göra icke-blockerande HTTP-anrop med WebClient:

  • Bygg med WebClient.builder().baseUrl(...)
  • Använd retrieve().bodyToMono/bodyToFlux för svar
  • Använd onStatus för felhantering
  • Använd timeout och retry för motståndskraft
Gratis att börja

Lär dig Java med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
24
Lektioner
93

Vanliga frågor

Är lektionen ”WebClient för reaktiva anrop” gratis?

Ja – hela texten till ”WebClient för reaktiva anrop” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Spring Boot 4-mikrotjänster och REST API:er, kan Ni uppgradera till CoddyKit PRO. Kursen i Spring Boot 4-mikrotjänster och REST API:er innehåller totalt 4 lektioner.

Vad lär jag mig i ”WebClient för reaktiva anrop”?

Anropa andra tjänster reaktivt. Ni övar på Spring Boot 4-mikrotjänster och REST API:er med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Spring Boot 4-mikrotjänster och REST API:er?

Du behöver inga förkunskaper. Utbildningen i Spring Boot 4-mikrotjänster och REST API:er på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”WebClient för reaktiva anrop”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Spring Boot 4-mikrotjänster och REST API:er-lektionen?

Ja. Varje Spring Boot 4-mikrotjänster och REST API:er-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Grunderna i Mono och Flux
  2. Reaktiva controllers
  3. WebClient för reaktiva anrop
  4. Backpressure och operatorer
← Tillbaka till Spring Boot 4-mikrotjänster och REST API:er