In einigen Fällen sind die Präfixe im Service Controller konsistent. Beispielsweise lautet das Präfix aller URLs /context-path/api/v1, und einigen URLs muss ein einheitliches Präfix hinzugefügt werden.
Die denkbare Lösung besteht darin, den Kontextpfad des Dienstes zu ändern und api/v1 zum Kontextpfad hinzuzufügen. Das oben genannte Problem kann gelöst werden, es gibt jedoch Nachteile, wenn die URL mehrere Präfixe hat Bei einigen URLs ist der Unterschied nicht zu erkennen, wenn Sie api/v2 voranstellen müssen. Wenn Sie api/v1 nicht zu einigen statischen Ressourcen im Dienst hinzufügen möchten, können Sie den Unterschied auch nicht erkennen.
Das Folgende ist das einheitliche Hinzufügen bestimmter URL-Präfixe durch benutzerdefinierte Anmerkungen.
Wenn Sie mehrere Präfixe benötigen, fügen Sie mehrere Konfigurationssätze hinzu, zum Beispiel: api.prefix.v2=/api/v2
####### #### ####URL-Präfixkonfiguration################
api.prefix.v1=/api/v1
@Data @Component @ConfigurationProperties(prefix = "api.prefix") public class ApiPrefix { private String v1; }
Diese Annotationsfunktion stimmt mit @RestController
überein und entspricht der Konfiguration von api.prefix.v1. Definieren Sie einfach mehrere Annotationen
@RestController @Documented @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface 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)); } }
@ApiV1RestController @RequestMapping("/test/apiv1") public class TestApiV1RestController { @GetMapping() public ResponseEntity get() { return new ResponseEntity(); } }
Das obige ist der detaillierte Inhalt vonSo fügen Sie SpringBoot-Multicontrollern ein URL-Präfix hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!