Rumah  >  Artikel  >  Java  >  Cara menambah awalan URL pada berbilang pengawal SpringBoot

Cara menambah awalan URL pada berbilang pengawal SpringBoot

WBOY
WBOYke hadapan
2023-05-12 18:37:201941semak imbas
Kata Pengantar

Dalam sesetengah kes, awalan dalam pengawal perkhidmatan adalah konsisten Contohnya, awalan semua URL ialah /context-path/api/v1, yang perlu ditambah untuk. beberapa URL awalan seragam.

Penyelesaian yang boleh difikirkan ialah mengubah suai laluan konteks perkhidmatan dan menambah api/v1 pada laluan konteks Mengubah suai awalan global dengan cara ini boleh menyelesaikan masalah di atas, tetapi terdapat kelemahan URL mempunyai berbilang awalan , contohnya, sesetengah URL perlu diawali dengan api/v2, jadi ia tidak boleh dibezakan Jika sesetengah sumber statik dalam perkhidmatan tidak mahu menambah api/v1, ia tidak boleh dibezakan.

Berikut ialah penambahan bersatu awalan URL tertentu melalui anotasi tersuai.

1. Tambahkan konfigurasi awalan dalam fail konfigurasi

Jika anda memerlukan berbilang awalan, tambahkan beberapa set konfigurasi, contohnya, tambah: api.prefix.v2=/api/v2

################konfigurasi awalan url##################
api.prefix.v1 =/api /v1

2. Konfigurasikan entiti dipetakan

@Data
@Component
@ConfigurationProperties(prefix = "api.prefix")
public class ApiPrefix {
    private String v1;
}

3. Anotasi tersuai

Fungsi anotasi ini konsisten dengan @RestController dan sepadan dengan api. konfigurasi prefix.v1, jika terdapat berbilang set konfigurasi, hanya tentukan berbilang anotasi

@RestController
@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiV1RestController {
}

4. Tambahkan awalan pada PathMatch tersuai

Tambah kelas konfigurasi untuk mewarisi WebMvcConfigurer, ganti kaedah configurePathMatch, dan tambahkan awalan pada kelas Tambah awalan yang sepadan pada antara muka dalam pengawal beranotasi dengan ApiV1RestController.

@AutoConfiguration
public class WebMvcConfig implements WebMvcConfigurer {
    @Autowired
    private ApiPrefix apiPrefix;
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        configurer.addPathPrefix(apiPrefix.getV1(), c -> c.isAnnotationPresent(ApiV1RestController.class));
    }
}

5 Ujian

Anda perlu menggunakan anotasi @ApiV1RestController dan bukannya anotasi @RestController pada pengawal yang sepadan

@ApiV1RestController
@RequestMapping("/test/apiv1")
public class TestApiV1RestController {
    @GetMapping()
    public ResponseEntity get() {
        return new ResponseEntity();
    }
}

Cara menambah awalan URL pada berbilang pengawal SpringBoot

Atas ialah kandungan terperinci Cara menambah awalan URL pada berbilang pengawal SpringBoot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam