API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) · Lektion

Definition af routes og predicates

Lær at definere dynamiske routes ved hjælp af predicates (f.eks. Path, Host og Method) for at dirigere forespørgsler til bestemte tjenester.

Lektion 3 af 412 trin

Definition af routes og predicates er en gratis API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-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 API-gateway og reverse proxy (Nginx + Spring Cloud Gateway), og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-kurset indeholder 4 lektioner i alt.

Routing med API-gateways

Velkommen! I en mikrotjenestearkitektur taler klienter ikke direkte med alle tjenester. I stedet interagerer de med en API Gateway.

Denne gateway fungerer som et enkelt indgangspunkt, der videresender indgående anmodninger til den korrekte backendtjeneste. Denne proces kaldes routing.

Hvad er prædikater

I Spring Cloud Gateway er prædikater afgørende for routing. Tænk på dem som 'betingelser' eller 'regler'.

  • Et prædikat evalueres til true eller false.
  • Hvis et prædikat (eller et sæt prædikater) for en rute evalueres til true, videresender gatewayen anmodningen ved hjælp af denne rute.
  • Hvis resultatet er false, forsøger gatewayen med den næste rute.

Grundlaget for gatewayprojektet

Ruter konfigureres typisk i din Spring Boot-applikations fil application.yml eller application.properties. Her er en minimal Spring Boot-applikation, som *kan* være vært for vores gatewaykonfiguration. Selve routinglogikken placeres i YAML-filen.

Du kan køre denne grundlæggende applikation for at se, at den fungerer:

package com.coddykit.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class GatewayApplication {

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

  @GetMapping("/test-gateway")
  public String testGateway() {
    return "Hello from Gateway!";
  }
}

Grundlæggende rutestruktur

En rute i Spring Cloud Gateway skal indeholde tre hoveddele:

  • id: En entydig identifikator for ruten.
  • uri: URI'en til den backendtjeneste, som anmodningerne videresendes til.
  • predicates: En liste over betingelser, der skal være opfyldt, for at ruten aktiveres.

Vi definerer primært disse i application.yml.

Stiprædikatet

Path-prædikatet er et af de mest almindelige. Det sammenholder anmodningens URI-sti med et angivet mønster.

  • Du kan bruge jokertegn som * (matcher ét stisegment) og ** (matcher flere stisegmenter).
  • For eksempel matcher /users/* /users/1, men ikke /users/admin/1.
  • /users/** matcher både /users/1 og /users/admin/1.

Stiprædikatet i praksis

Sådan konfigurerer du en rute ved hjælp af Path-prædikatet, så alle anmodninger, der begynder med /api/users, sendes til en backend med user-service:

spring:
  cloud:
    gateway:
      routes:
        - id: user_service_route
          uri: http://localhost:8081 # Your backend user service
          predicates:
            - Path=/api/users/**

Værtsprædikatet

Host-prædikatet matcher anmodninger ud fra værtsnavnet i anmodningshovedet.

  • Det er nyttigt til at route anmodninger fra forskellige domæner eller underdomæner til bestemte tjenester.
  • Du kan også bruge jokertegn her, f.eks. *.example.com, til at matche alle underdomæner under example.com.

Eksempel på værtsprædikat

Lad os sige, at du vil route alle anmodninger fra api.mycompany.com til en bestemt backendtjeneste. Sådan gør du:

spring:
  cloud:
    gateway:
      routes:
        - id: api_domain_route
          uri: http://localhost:8082 # Your backend API service
          predicates:
            - Host=api.mycompany.com

Metodeprædikatet

Method-prædikatet matcher anmodninger ud fra deres HTTP-metode (også kaldet HTTP-verbum).

  • Almindelige metoder omfatter GET, POST, PUT, DELETE og PATCH.
  • Det gør det muligt at sende forskellige typer handlinger (f.eks. læsning eller oprettelse af data) til forskellige backendendepunkter eller tjenester.

Eksempel på metodeprædikat

Hvis du vil sikre, at kun POST-anmodninger til /products routes til en bestemt tjeneste, mens andre metoder håndteres et andet sted:

spring:
  cloud:
    gateway:
      routes:
        - id: create_product_route
          uri: http://localhost:8083 # Service for creating products
          predicates:
            - Path=/products
            - Method=POST

Kontrol af prædikaternes styrke

Du har lært om prædikaterne Path, Host og Method. Nu skal du teste din forståelse!

Opsummering: Ruter og prædikater

Godt gået! Du har lært det grundlæggende i at definere ruter og bruge prædikater i Spring Cloud Gateway.

  • Ruter videresender trafik til backendtjenester.
  • Prædikater er betingelserne (som Path, Host og Method>), der afgør, om en rute matcher.
  • Flere prædikater på én rute fungerer som en AND-betingelse.

Denne effektive kombination giver mulighed for fleksibel og intelligent trafikstyring i dine mikrotjenester.

Gratis at komme i gang

Lær API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) 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
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Definition af routes og predicates” gratis?

Ja — hele teksten til “Definition af routes og predicates” 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 API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-kurset, skal du opgradere til CoddyKit PRO. API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Definition af routes og predicates”?

Lær at definere dynamiske routes ved hjælp af predicates (f.eks. Path, Host og Method) for at dirigere forespørgsler til bestemte tjenester. Du øver dig i API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) 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å API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)?

Der kræves ingen tidligere erfaring. API-gateway og reverse proxy (Nginx + Spring Cloud Gateway) 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 “Definition af routes og predicates”?

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 API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-lektion?

Ja. Alle API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)-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. Gateway kontra traditionelle mikroservices
  2. Opsætning af et grundlæggende gatewayprojekt
  3. Definition af routes og predicates
  4. Forstå det reaktive fundament
← Tilbage til API-gateway og reverse proxy (Nginx + Spring Cloud Gateway)