Rumah  >  Artikel  >  Java  >  Membina Gerbang API Mudah dengan Gerbang Awan Spring

Membina Gerbang API Mudah dengan Gerbang Awan Spring

Patricia Arquette
Patricia Arquetteasal
2024-11-03 12:14:02484semak imbas

Dalam seni bina perkhidmatan mikro moden, Gerbang API adalah penting. Ia menyediakan satu titik masuk untuk berbilang perkhidmatan, membolehkan kami mengurus permintaan, keselamatan, pengehadan kadar, pengimbangan beban dan banyak lagi. Dalam artikel ini, kami akan meneroka cara untuk menyediakan Gerbang API asas menggunakan Gerbang Awan Musim Bunga dan mengarahkan permintaan ke titik akhir yang berbeza berdasarkan laluan. Kami juga akan menunjukkan cara menggunakan penapis untuk memanipulasi laluan secara dinamik.

Jom selami kod!

Building a Simple API Gateway with Spring Cloud Gateway

Oh tidak !!

Prasyarat

Untuk mengikuti, anda memerlukan:

  • Java 11 atau lebih tinggi
  • But Musim Bunga (3.0 atau lebih baru disyorkan)
  • Gerbang Awan Spring Reaktif

Persediaan Projek

Buat projek Spring Boot baharu dan sertakan kebergantungan Spring Cloud Gateway. Anda boleh melakukan ini dengan mudah dengan menyediakan projek baharu pada Spring Initializr, memilih Spring Boot dan Reactive Spring Cloud Gateway di bawah kebergantungan.

Ini coretan pom.xml:

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-contract-stub-runner</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

Membina Gerbang API

Mari konfigurasikan Gateway kami untuk mengendalikan permintaan untuk tiga laluan berbeza:

  1. /get/country/{name} – Untuk mengambil butiran tentang sesebuah negara.
  2. /get/language/{name} – Untuk mendapatkan maklumat berdasarkan bahasa.
  3. /get/subregion/{name} – Untuk mendapatkan semula data bagi subregion tertentu.

"Kami akan menggunakan REST Countries API untuk mensimulasikan perkhidmatan mikro lain yang kami ada dalam seni bina kami."


Menyediakan Laluan

Saya telah mencipta folder yang dipanggil penghala berhampiran fail utama aplikasi. Di dalamnya, kami akan mencipta fail bernama Routes.java di mana kami mentakrifkan laluan kami, mengkonfigurasi setiap laluan dan menggunakan penapis untuk mengarahkan permintaan secara dinamik.

package dev.mspilari.api_gateway.router;

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class Routes {

    @Bean
    public RouteLocator routeLocator(RouteLocatorBuilder builder) {
        return builder.routes()
                .route("country_route", p -> p
                        .path("/get/country/{name}")
                        .filters(f -> f.setPath("/v3.1/name/{name}"))
                        .uri("https://restcountries.com"))

                .route("language_route", p -> p
                        .path("/get/language/{name}")
                        .filters(f -> f.setPath("/v3.1/lang/{name}"))
                        .uri("https://restcountries.com"))

                .route("subregion_route", p -> p
                        .path("/get/subregion/{name}")
                        .filters(f -> f.setPath("/v3.1/subregion/{name}"))
                        .uri("https://restcountries.com"))
                .build();
    }
}

Penjelasan Kod

  • Definisi Laluan: kami mentakrifkan setiap laluan menggunakan kaedah laluan, yang mengambil pengecam (cth., country_route) dan lambda yang mentakrifkan laluan.

  • Padanan Laluan: .path("/get/country/{name}") digunakan untuk memadankan corak URL yang masuk. {name} ialah pembolehubah yang boleh digantikan secara dinamik dengan sebarang nilai, seperti nama negara seperti "Brazil".

  • Penapis: kami menggunakan SetPath untuk mengubah suai laluan permintaan keluar. Contohnya, .setPath("/v3.1/name/{name}") menulis semula /get/country/{name} kepada /v3.1/name/{name}, titik akhir yang diperlukan oleh REST Countries API.

  • URI: kami menetapkan uri kepada https://restcountries.com, yang berfungsi sebagai URL asas. Spring Cloud Gateway akan menghantar laluan yang diubah suai ke URI ini.


Menjalankan Gerbang

Mulakan aplikasi Spring Boot anda. Kini, anda boleh membuat permintaan ke Gateway, dan ia akan memajukannya ke titik akhir yang betul.

Cuba arahan berikut dalam terminal anda untuk menguji laluan:

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-contract-stub-runner</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

Setiap permintaan akan dihalakan oleh Gateway ke titik akhir API REST Countries masing-masing, berdasarkan laluan dan parameter.


Mengesahkan Respons

Jika semuanya dikonfigurasikan dengan betul, anda akan melihat respons yang sepadan dengan apa yang anda perolehi daripada memanggil terus API Negara REST.

Contohnya:

package dev.mspilari.api_gateway.router;

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class Routes {

    @Bean
    public RouteLocator routeLocator(RouteLocatorBuilder builder) {
        return builder.routes()
                .route("country_route", p -> p
                        .path("/get/country/{name}")
                        .filters(f -> f.setPath("/v3.1/name/{name}"))
                        .uri("https://restcountries.com"))

                .route("language_route", p -> p
                        .path("/get/language/{name}")
                        .filters(f -> f.setPath("/v3.1/lang/{name}"))
                        .uri("https://restcountries.com"))

                .route("subregion_route", p -> p
                        .path("/get/subregion/{name}")
                        .filters(f -> f.setPath("/v3.1/subregion/{name}"))
                        .uri("https://restcountries.com"))
                .build();
    }
}

Faedah Menggunakan Gerbang Awan Spring

  1. Titik Kemasukan Tunggal: semua permintaan melalui Gerbang, memudahkan interaksi pelanggan dan pengurusan API.
  2. Penghalaan Fleksibel: Laluan boleh disesuaikan dengan mudah dengan parameter laluan dan penapis.
  3. Penulisan Semula Laluan Dinamik: Gerbang membenarkan kami melaraskan laluan permintaan secara dinamik, menjadikannya mudah untuk disepadukan dengan API luaran tanpa menukar kod sebelah klien.

Langkah Seterusnya

Persediaan ini merangkumi asas penghalaan dengan Spring Cloud Gateway. Dalam siaran seterusnya, kami akan meneroka ciri tambahan, seperti:

  • Pengesahan dan Keizinan – laluan selamat dengan menyepadukan dengan OAuth atau JWT.
  • Penghadan Kadar dan Pemutus Litar – tambah daya tahan dengan penapis terbina dalam.
  • Pengimbangan Beban – edarkan permintaan merentas berbilang kejadian untuk prestasi yang lebih baik.
  • Pengelogan dan Kebolehmerhatian – dapatkan cerapan tentang gelagat dan prestasi aplikasi, serta pantau corak trafik melalui pengesanan teragih dan pengelogan berpusat.

? Rujukan

  • Gerbang Awan Musim Bunga
  • Membina pintu masuk

? Bercakap dengan saya

  • LinkedIn
  • Github
  • Portfolio

Atas ialah kandungan terperinci Membina Gerbang API Mudah dengan Gerbang Awan Spring. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn