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.
Jika anda memerlukan berbilang awalan, tambahkan beberapa set konfigurasi, contohnya, tambah: api.prefix.v2=/api/v2
################konfigurasi awalan url##################
api.prefix.v1 =/api /v1
@Data @Component @ConfigurationProperties(prefix = "api.prefix") public class ApiPrefix { private String v1; }
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 { }
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)); } }
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(); } }
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!