Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pembangunan Backend Java: Menggunakan Proksi Permintaan Berpura-pura untuk API

Pembangunan Backend Java: Menggunakan Proksi Permintaan Berpura-pura untuk API

WBOY
WBOYasal
2023-06-17 10:26:521473semak imbas

Dengan pembangunan Internet, penggunaan API telah menjadi semakin meluas, dan dalam pembangunan back-end Java, menggunakan proksi permintaan Feign for API telah menjadi amalan biasa. Artikel ini bertujuan untuk memperkenalkan konsep asas dan penggunaan Feign serta membantu pembangun lebih memahami dan menggunakan Feign.

1. Konsep asas Feign

Feign ialah klien HTTP templat deklaratif yang boleh membantu pembangun membuat permintaan API dengan lebih mudah. Idea terasnya ialah menggunakan antara muka untuk menerangkan API, dan kemudian menjana kod permintaan melalui proksi dinamik untuk melaksanakan panggilan ke API.

Dalam Feign, setiap antara muka sepadan dengan perkhidmatan jauh dan kaedah dalam antara muka mewakili permintaan untuk perkhidmatan itu. Melalui anotasi, kami boleh menentukan kaedah permintaan (GET, POST, dll.), parameter permintaan (@RequestParam, @RequestBody, dll.), alamat permintaan (@RequestLine, @GetMapping, dll.) dan maklumat lain.

2. Cara menggunakan Feign

Pertama, kita perlu menambah kebergantungan Feign dalam pom.xml:

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

Seterusnya, kita perlu menambah @EnableFeignClients ke kelas permulaan anotasi untuk mendayakan klien Feign:

@SpringBootApplication
@EnableFeignClients
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Seterusnya, kami boleh mencipta antara muka Feign:

@FeignClient(name = "user-service")
public interface UserService {
    @GetMapping("/users/{id}")
    User getUser(@PathVariable("id") Long id);
}

Dalam antara muka ini, kami menggunakan anotasi @FeignClient untuk mengisytiharkan antara muka Ia adalah klien Feign, di mana atribut nama menentukan nama pelanggan, yang akan digunakan semasa memanggil.

Seterusnya, kami menggunakan anotasi @GetMapping untuk menentukan kaedah permintaan dan alamat permintaan, dengan {id} ialah pemegang tempat, menunjukkan bahawa parameter ini perlu diisi semasa membuat panggilan.

Akhir sekali, kaedah getUser ditakrifkan, yang mengembalikan objek Pengguna, yang merupakan hasil tindak balas API jauh.

Penggunaan seterusnya adalah sangat mudah Kami boleh menggunakan antara muka ini seperti kacang tempatan:

@RestController
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/users/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.getUser(id);
    }
}

Dalam contoh ini, kami menggunakan anotasi @Autowired untuk menyuntik antara muka UserService dan kaedah getUsernya. dipanggil dalam kaedah getUser untuk mendapatkan maklumat pengguna. Semasa proses ini, Feign akan menjana permintaan HTTP berdasarkan definisi dalam antara muka, menghantarnya ke perkhidmatan jauh dan menukar hasil respons kepada objek Pengguna dan mengembalikannya.

3. Ciri Feign

Selain fungsi asas, Feign juga menyediakan banyak ciri berguna, seperti pemintas permintaan, percubaan semula permintaan, codec tersuai, dll. Ciri membantu kami mengurus permintaan API dengan lebih baik .

Sebagai contoh, jika perlu, kami boleh menambahkan pengepala permintaan dengan mudah pada semua permintaan Feign atau menyulitkan parameter permintaan:

public class AuthInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate template) {
        String accessToken = getAccessToken();
        template.header("Authorization", "Bearer " + accessToken);
        encryptRequestBody(template);
    }
}

Dalam pemintasan permintaan ini Dalam pelayan, kami menambahkan medan Kebenaran pada pengepala permintaan dan menyulitkan badan permintaan. Kami hanya perlu menambah pemintas ini apabila mengisytiharkan klien Feign berkuat kuasa:

@FeignClient(name = "user-service", configuration = FeignConfig.class)
public interface UserService {
    ...
}

@Configuration
public class FeignConfig {
    @Bean
    public AuthInterceptor authInterceptor() {
        return new AuthInterceptor();
    }
}

Dengan cara ini, kami boleh menambahkan beberapa logik pemprosesan biasa kepada klien Feign dengan mudah, dengan itu mengelakkan Kod penduaan dan kos penyelenggaraan.

4 Ringkasan

Feign ialah alat proksi permintaan API yang sangat mudah, yang boleh membantu kami mengurus permintaan API dan meningkatkan kecekapan pembangunan. Apabila menggunakan Feign, kita perlu memberi perhatian kepada konsep asas dan kaedah penggunaannya, serta menguasai ciri-cirinya untuk menggunakan dan menyesuaikannya dengan lebih baik.

Atas ialah kandungan terperinci Pembangunan Backend Java: Menggunakan Proksi Permintaan Berpura-pura untuk API. 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