API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) · บทเรียน

การกำหนดเส้นทางและเงื่อนไข

เรียนรู้การกำหนดเส้นทางแบบไดนามิกโดยใช้เงื่อนไข เช่น Path, Host และ Method เพื่อส่งคำขอไปยังบริการที่ระบุ

บทเรียน 3 จาก 412 ขั้นตอน

การกำหนดเส้นทางและเงื่อนไข เป็นบทเรียน API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

Routing with API Gateways

Welcome! In a microservices architecture, clients don't talk directly to every service. Instead, they interact with an API Gateway.

This gateway acts as a single entry point, directing incoming requests to the correct backend service. This process is called routing.

What Are Predicates?

In Spring Cloud Gateway, predicates are key to routing. Think of them as 'conditions' or 'rules'.

  • A predicate evaluates to true or false.
  • If a predicate (or set of predicates) for a route evaluates to true, the gateway forwards the request using that route.
  • If false, the gateway tries the next route.

Gateway Project Foundation

Routes are typically configured in your Spring Boot application's application.yml or application.properties file. Here's a minimal Spring Boot application that *could* host our gateway configuration. The routing logic itself will go into the YAML.

You can run this basic app to see it working:

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!";
  }
}

Basic Route Structure

A route in Spring Cloud Gateway needs three main things:

  • id: A unique identifier for the route.
  • uri: The URI of the backend service to which requests will be forwarded.
  • predicates: A list of conditions that must be met for this route to activate.

We'll primarily define these in application.yml.

The Path Predicate

The Path predicate is one of the most common. It matches the request URI path against a specified pattern.

  • You can use wildcards like * (matches one path segment) and ** (matches multiple path segments).
  • For example, /users/* matches /users/1 but not /users/admin/1.
  • /users/** matches both /users/1 and /users/admin/1.

Path Predicate in Action

Here's how you'd configure a route using the Path predicate to send all requests starting with /api/users to a backend user-service:

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

The Host Predicate

The Host predicate matches requests based on the hostname in the request header.

  • This is useful for routing requests from different domains or subdomains to specific services.
  • You can also use wildcards here, like *.example.com to match any subdomain of example.com.

Host Predicate Example

Let's say you want to route all requests coming from api.mycompany.com to a specific backend service. Here's how:

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

The Method Predicate

The Method predicate matches requests based on their HTTP method (also known as HTTP verb).

  • Common methods include GET, POST, PUT, DELETE, and PATCH.
  • This allows you to direct different types of operations (e.g., reading vs. creating data) to distinct backend endpoints or services.

Method Predicate Example

To ensure only POST requests to /products are routed to a specific service, and other methods are handled elsewhere:

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

Predicate Power Check

You've learned about Path, Host, and Method predicates. Now, let's test your understanding!

Recap: Routes & Predicates

Great job! You've learned the fundamentals of defining routes and using predicates in Spring Cloud Gateway.

  • Routes direct traffic to backend services.
  • Predicates are the conditions (like Path, Host, Method) that determine if a route matches.
  • Multiple predicates on a single route act as an AND condition.

This powerful combination allows for flexible and intelligent traffic management in your microservices.

เริ่มต้นได้ฟรี

เรียนรู้ API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
12
บทเรียน
48

คำถามที่พบบ่อย

บทเรียน “การกำหนดเส้นทางและเงื่อนไข” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การกำหนดเส้นทางและเงื่อนไข” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) ให้อัปเกรดเป็น CoddyKit PRO คอร์ส API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การกำหนดเส้นทางและเงื่อนไข”

เรียนรู้การกำหนดเส้นทางแบบไดนามิกโดยใช้เงื่อนไข เช่น Path, Host และ Method เพื่อส่งคำขอไปยังบริการที่ระบุ คุณปฏิบัติ API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การกำหนดเส้นทางและเงื่อนไข” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) นี้ได้ไหม

ได้ บทเรียน API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เกตเวย์กับไมโครเซอร์วิสแบบดั้งเดิม
  2. การตั้งค่าโครงการเกตเวย์เบื้องต้น
  3. การกำหนดเส้นทางและเงื่อนไข
  4. ทำความเข้าใจพื้นฐานแบบรีแอกทีฟ
← กลับไปที่ API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)