ルートとPredicateの定義
Predicate(Path、Host、Methodなど)を使って動的なルートを定義し、リクエストを特定のサービスへ振り分ける方法を学習します。
「ルートとPredicateの定義」はCoddyKit上の無料API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)レッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これは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
trueorfalse. - 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/1but not/users/admin/1. /users/**matches both/users/1and/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.comto match any subdomain ofexample.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.comThe Method Predicate
The Method predicate matches requests based on their HTTP method (also known as HTTP verb).
- Common methods include
GET,POST,PUT,DELETE, andPATCH. - 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=POSTPredicate 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.
よくある質問
「ルートとPredicateの定義」レッスンは無料ですか?
はい。「ルートとPredicateの定義」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)コースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)コースには全4レッスンが含まれています。
「ルートとPredicateの定義」で何を学びますか?
Predicate(Path、Host、Methodなど)を使って動的なルートを定義し、リクエストを特定のサービスへ振り分ける方法を学習します。 ブラウザで直接実行するハンズオンコードでAPI Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)を演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)を始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAPI Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)は初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「ルートとPredicateの定義」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAPI Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)レッスンでコードを書いて実行できますか?
はい。すべてのAPI Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway)レッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Gatewayと従来のマイクロサービスの比較
- 基本的なGatewayプロジェクトの構築
- ルートとPredicateの定義
- リアクティブ基盤を理解する