WebClient för reaktiva anrop
Anropa andra tjänster reaktivt.
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- ochFlux-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/bodyToFluxför svar - Använd
onStatusför felhantering - Använd
timeoutochretryför motståndskraft
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
- Grunderna i Mono och Flux
- Reaktiva controllers
- WebClient för reaktiva anrop
- Backpressure och operatorer