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

API Gateway med Spring Cloud Gateway

Opsæt en Spring Cloud Gateway til at dirigere requests, anvende filtre og sikre Deres mikrotjenester.

Lektion 3 af 311 trin

API Gateway med Spring Cloud Gateway er en gratis Spring Boot 4-mikrotjenester og REST-API'er-lektion på CoddyKit. Dette er lektion 3 af 3. 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 3 lektioner i alt.

Hvorfor en API-gateway?

Mikrotjenester er gode til at bygge skalerbare applikationer, men de kan gøre systemet mere komplekst. Forestil dig at have mange tjenester, hver med sin egen adresse og port.

En API-gateway fungerer som et enkelt, samlet indgangspunkt for alle klientforespørgsler. Den leder den indkommende trafik videre til den korrekte mikrotjeneste og gør det enklere for klienter at kommunikere med din backend.

Hvad er Spring Cloud Gateway?

Spring Cloud Gateway (SCG) er en effektiv, reaktiv API-gateway, der er bygget på Spring Framework 5, Project Reactor og Spring Boot 2. Den er udviklet til høj ydeevne og skalerbarhed.

  • Den tilbyder fleksibel routing baseret på forespørgsler.
  • Den aktiverer dynamisk filtrering af forespørgsler og svar.
  • Den integreres problemfrit med andre Spring Cloud-projekter.

Opsætning af dit gateway-projekt

Hvis du vil oprette en Spring Cloud Gateway-applikation, skal du begynde med et standard Spring Boot-projekt. Det vigtigste er at tilføje afhængigheden spring-cloud-starter-gateway.

Denne afhængighed medtager alt det, der skal til for at omdanne din Spring Boot-app til en intelligent gateway. Husk at medtage spring-cloud-dependencies i sektionen dependencyManagement.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.5</version>
    <relativePath/>
  </parent>
  <groupId>com.coddykit</groupId>
  <artifactId>gateway</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>gateway</name>
  <description>Demo project for Spring Cloud Gateway</description>
  <properties>
    <java.version>17</java.version>
    <spring-cloud.version>2023.0.1</spring-cloud.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
  </dependencies>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>

Definition af grundlæggende ruter

Ruter er kernen i en API-gateway. De fortæller gatewayen, hvordan indkommende forespørgsler skal videresendes til den korrekte backend-tjeneste. Ruter defineres ved hjælp af prædikater og en mål-URI.

Her matcher prædikatet Path=/hello/** alle forespørgselsstier, der begynder med /hello/, og dirigerer dem til http://localhost:8081.

server:
  port: 8080

spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      routes:
        - id: hello_route
          uri: http://localhost:8081
          predicates:
            - Path=/hello/**

Test af din gateway-rute

For at teste ruten skal du typisk have en backend-mikrotjeneste kørende. Lad os forestille os en simpel »hello-service«, der kører på http://localhost:8081 og svarer på alle stier med /hello/**.

  • Start din Gateway-applikation (f.eks. på port 8080).
  • Send en forespørgsel til http://localhost:8080/hello/world.
  • Gatewayen opfanger den og videresender den til http://localhost:8081/hello/world.
  • Svaret fra »hello-service« sendes derefter tilbage til klienten via Gateway.

Introduktion til gateway-filtre

Gateway-filtre er funktioner, der gør det muligt at ændre forespørgsler og svar, mens de passerer gennem gatewayen. De er særdeles effektive til at implementere tværgående funktionalitet.

  • Forespørgselsfiltre: Ændrer forespørgslen, før den når måltjenesten.
  • Svarfiltre: Ændrer svaret, før det sendes tilbage til klienten.

Filtre kan anvendes globalt på alle ruter eller specifikt på individuelle ruter.

Anvendelse af et simpelt filter: AddRequestHeader

Lad os udvide vores hello_route med et filter. Filteret AddRequestHeader er et indbygget filter, der tilføjer en angivet header til forespørgslen, før den videresendes.

Det er nyttigt til at indsætte korrelations-id'er, sikkerhedstokens eller oplysninger om oprindelse i forespørgsler, der sendes til downstream-tjenester.

server:
  port: 8080

spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      routes:
        - id: hello_route_with_header
          uri: http://localhost:8081
          predicates:
            - Path=/hello/**
          filters:
            - AddRequestHeader=X-Request-Source, Gateway

Centralisering af sikkerhed med Gateway

En API-gateway er et ideelt sted at centralisere sikkerhedsmekanismer for dine mikrotjenester. I stedet for at implementere godkendelse og autorisation i hver tjeneste kan gatewayen håndtere det ét sted.

  • Godkendelse: Valider brugeroplysninger eller tokens (f.eks. JWT).
  • Autorisation: Kontrollér, om den godkendte bruger har tilladelse til den ønskede ressource.
  • Hvis kontrollerne godkendes, fortsætter forespørgslen; ellers afvises den på gateway-niveau.

Ud over indbyggede filtre: Tilpassede filtre

Spring Cloud Gateway indeholder mange nyttige indbyggede filtre, men du kan få brug for tilpasset logik. Du kan oprette dine egne filtre ved at implementere grænsefladerne GlobalFilter og Ordered.

Tilpassede filtre er ideelle til særlige krav til logning, avanceret indsamling af målepunkter eller skræddersyede sikkerhedskontroller, der gælder på tværs af hele dit API-landskab.

Tjek af gateway-koncepter

Test din forståelse af grundprincipperne i API-gateways!

Opsummering: API-gatewayens styrke

Godt klaret! I denne lektion har du udforsket den afgørende rolle, som en API-gateway spiller i et mikrotjenestemiljø, specifikt med Spring Cloud Gateway.

  • Du har forstået dens formål som et enkelt indgangspunkt.
  • Du har lært at konfigurere grundlæggende routing med prædikater.
  • Du har opdaget, hvordan filtre kan ændre forespørgsler og svar.
  • Du har fået indblik i dens betydning for centralisering af sikkerheden.

API-gateways er afgørende for at bygge robuste, sikre og håndterbare mikrotjenestesystemer.

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 “API Gateway med Spring Cloud Gateway” gratis?

Ja — hele teksten til “API Gateway med Spring Cloud Gateway” 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 3 lektioner i alt.

Hvad lærer jeg i “API Gateway med Spring Cloud Gateway”?

Opsæt en Spring Cloud Gateway til at dirigere requests, anvende filtre og sikre Deres mikrotjenester. 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 3.

Hvor lang tid tager lektionen “API Gateway med Spring Cloud Gateway”?

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. Implementering af Eureka Service Discovery
  2. Klientside-loadbalancering med Ribbon
  3. API Gateway med Spring Cloud Gateway
← Tilbage til Spring Boot 4-mikrotjenester og REST-API'er