サービス コントローラーのプレフィックスが一貫している場合があります。たとえば、すべての URL のプレフィックスは /context-path/api/v1 なので、それを追加する必要があります。一部の URL に共通のプレフィックス。
考えられる解決策は、サービスのコンテキスト パスを変更し、コンテキスト パスに api/v1 を追加することです。この方法でグローバル プレフィックスを変更すると、上記の問題は解決できますが、欠点もあります。 URL には複数の接頭辞があります。たとえば、一部の URL には api/v2 を接頭辞として付ける必要があるため、区別できません。サービス内の一部の静的リソースが api/v1 を追加したくない場合、それらは区別できません。
以下は、カスタム アノテーションによる特定の URL プレフィックスの統合された追加を実装します。
複数のプレフィックスが必要な場合は、複数の設定セットを追加します (例: api.prefix.v2=/api/v2##)。
##api.prefix.v1 =/api /v1
@Data @Component @ConfigurationProperties(prefix = "api.prefix") public class ApiPrefix { private String v1; }3. カスタム アノテーションこのアノテーション関数は
@RestController
と一致します。 api.prefix.v1 の設定の場合、複数の設定セットがある場合は、複数のアノテーションを定義するだけです@RestController @Documented @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface ApiV1RestController { }4. PathMatch をカスタマイズしてプレフィックスを追加します###設定クラスを追加しますWebMvcConfigurer を継承し、configurePathMatch メソッドをオーバーライドして、クラスの 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.Test######対応するコントローラーで @RestController アノテーションの代わりに @ApiV1RestController アノテーションを使用する必要があります###
@ApiV1RestController @RequestMapping("/test/apiv1") public class TestApiV1RestController { @GetMapping() public ResponseEntity get() { return new ResponseEntity(); } }#########
以上がSpringBootの複数のコントローラにURLプレフィックスを追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。