Spring Boot 4 – komplett guide · Lektion

API-gateway med Spring Cloud Gateway

Bygg en API-gateway med Spring Cloud Gateway för att dirigera förfrågningar, hantera säkerhet och administrera tvärgående funktionalitet.

Lektion 3 av 411 steg

API-gateway med Spring Cloud Gateway är en gratis lektion i Spring Boot 4 – komplett guide på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Spring Boot 4 – komplett guide, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Spring Boot 4 – komplett guide innehåller totalt 4 lektioner.

API-gateway: ytterdörren

I en mikrotjänstarkitektur har du ofta många små, fristående tjänster. Hur kommunicerar klientapplikationer (som en mobilapp eller webbläsare) med dem?

En API-gateway fungerar som en enda, enhetlig ingångspunkt för alla klientförfrågningar. I stället för att klienterna behöver känna till och anropa enskilda tjänster kommunicerar de helt enkelt med gatewayen.

Varför använda en API-gateway?

Gateways centraliserar gemensam funktionalitet som annars skulle dupliceras i flera tjänster eller hanteras av klienterna. Detta förenklar utvecklingen och förbättrar tjänstehanteringen. Viktiga fördelar är:

  • Begäranderoutning: Dirigera inkommande begäranden till rätt backend-mikrotjänst.
  • Säkerhet: Hantera autentisering och auktorisering vid kanten.
  • Frekvensbegränsning: Skydda tjänster från att överbelastas av för många begäranden.
  • Övervakning och loggning: Centraliserad insamling av mätvärden och loggar för begäranden.
  • Kretsbrytning: Förbättra motståndskraften mot fel i underordnade tjänster.

Introduktion till Spring Cloud Gateway

Spring Cloud Gateway (SCG) är en kraftfull, reaktiv API Gateway som bygger på Spring WebFlux. Den är utformad för hög prestanda och skalbarhet, vilket gör den idealisk för moderna mikrotjänster.

SCG ersatte den äldre Netflix Zuul och erbjuder ett modernare, icke-blockerande sätt att effektivt hantera API-trafik.

Konfigurera gateway-projektet

För att börja bygga en API Gateway behöver Ni ett Spring Boot-projekt med specifika beroenden. De viktigaste är:

  • spring-cloud-starter-gateway: Tillhandahåller gateway-funktionalitet.
  • spring-boot-starter-webflux: Det reaktiva webbramverk som SCG bygger på.

Ni kan enkelt generera ett projekt med dessa beroenden med hjälp av Spring Initializr.

Kod: En minimal gateway

Detta är en minimal Spring Cloud Gateway-applikation. Den definierar en enkel route med Java-konfiguration (ett alternativ till application.yml) som vidarebefordrar begäranden från /hello till httpbin.org/get.

Prova att köra den! Öppna sedan webbläsaren och gå till http://localhost:8080/hello. Ni bör se ett JSON-svar från httpbin.org.

package com.coddykit.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class GatewayApplication {

  public static void main(String[] args) {
    SpringApplication.run(GatewayApplication.class, args);
  }

  @Bean
  public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    return builder.routes()
      .route("hello_route", r -> r.path("/hello")
        .uri("http://httpbin.org/get"))
      .build();
  }
}

Konfigurera routes med YAML

Java-konfiguration är användbar för programmatiska routes, men det vanligaste och mest flexibla sättet att definiera routes i Spring Cloud Gateway är att använda application.yml eller application.properties.

Detta gör det möjligt att externalisera konfigurationen och förenkla hanteringen. Varje route består av ett id, en mål-uri och predicates som matchar inkommande begäranden.

Exempel på ett application.yml-avsnitt:

spring:\n cloud:\n gateway:\n routes:\n - id: my_service_route\n uri: http://localhost:8081\n predicates:\n - Path=/api/myservice/**\nserver:\n port: 8080

Begärandepredikat: matchmakarna

Predicates är centrala komponenter i en route. De är villkor som måste vara uppfyllda för att en route ska tillämpas på en inkommande begäran. De utvärderar olika delar av HTTP-begäran.

Vanliga predikat är:

  • Path=/users/**: Matchar begäranden baserat på URI-sökvägen.
  • Method=GET,POST: Matchar specifika HTTP-metoder.
  • Host=*.example.com: Matchar begäranden baserat på värdhuvudet.
  • Header=X-Request-Id, \d+: Matchar begäranden med ett specifikt huvud och ett reguljärt uttryck som värde.

Kod: Routning med Path-predikat

Låt oss konfigurera en route med application.yml som använder predikatet Path för att vidarebefordra begäranden som börjar med /backend/** till en tjänst som körs på port 8081.

Placera detta i src/main/resources/application.yml:

spring:\n cloud:\n gateway:\n routes:\n - id: backend_service_route\n uri: http://localhost:8081\n predicates:\n - Path=/backend/**\n application:\n name: api-gateway\nserver:\n port: 8080

När Ni öppnar http://localhost:8080/backend/hello routar gatewayen begäran till http://localhost:8081/hello.

Gateway-filter: magi för begäran och svar

Filter gör det möjligt att ändra den inkommande begäran eller det utgående svaret. De kan tillämpas på specifika routes (routspecifika filter) eller på alla routes (globala filter).

Exempel på inbyggda filter:

  • AddRequestHeader: Lägger till ett huvud i begäran innan den skickas till den underordnade tjänsten.
  • AddResponseHeader: Lägger till ett huvud i svaret innan det skickas tillbaka till klienten.
  • RateLimiter: Styr hur många begäranden som tillåts per tidsenhet och förhindrar missbruk.

Testa Era kunskaper om gateways

Anta att en Spring Cloud Gateway-applikation har konfigurerats med följande route:

spring:\n  cloud:\n    gateway:\n      routes:\n        - id: my_product_route\n          uri: lb://PRODUCT-SERVICE\n          predicates:\n            - Path=/products/{segment}\n          filters:\n            - AddRequestHeader=X-Request-Source, Gateway

Vilka av följande påståenden är sanna om denna konfiguration?

Sammanfattning: det viktigaste om gateways

Ni har lärt Er om den grundläggande rollen för API Gateways i en mikrotjänstarkitektur och hur Spring Cloud Gateway implementerar detta mönster.

  • En API Gateway fungerar som en enda, central ingångspunkt för klienter.
  • Routes definierar hur inkommande begäranden mappas till backend-tjänster.
  • Predicates är villkor som avgör vilka begäranden en route gäller för.
  • Filters gör det möjligt att ändra begäranden eller svar och hantera övergripande aspekter som säkerhet eller frekvensbegränsning.

Goda kunskaper i SCG är avgörande för att bygga robusta och skalbara mikrotjänstsystem!

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
21
Lektioner
84

Vanliga frågor

Är lektionen ”API-gateway med Spring Cloud Gateway” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Spring Boot 4 – komplett guide, inklusive ”API-gateway med Spring Cloud Gateway”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Spring Boot 4 – komplett guide innehåller totalt 4 lektioner.

Vad lär jag mig i ”API-gateway med Spring Cloud Gateway”?

Bygg en API-gateway med Spring Cloud Gateway för att dirigera förfrågningar, hantera säkerhet och administrera tvärgående funktionalitet. Ni övar på Spring Boot 4 – komplett guide 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 – komplett guide?

Du behöver inga förkunskaper. Utbildningen i Spring Boot 4 – komplett guide 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 ”API-gateway med Spring Cloud Gateway”?

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 – komplett guide-lektionen?

Ja. Varje Spring Boot 4 – komplett guide-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. Mikrotjänsteprinciper och design
  2. Tjänsteupptäckt och registrering
  3. API-gateway med Spring Cloud Gateway
  4. Centraliserad konfiguration med Spring Cloud Config
← Tillbaka till Spring Boot 4 – komplett guide