Heim > Java > javaLernprogramm > Hauptteil

So fügen Sie SpringBoot-Multicontrollern ein URL-Präfix hinzu

WBOY
Freigeben: 2023-05-12 18:37:20
nach vorne
2037 Leute haben es durchsucht
Vorwort

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.

1. Präfixkonfiguration in der Konfigurationsdatei hinzufügen

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

2. Konfigurieren Sie die zugeordnete Entität

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

3. Benutzerdefinierte Annotation

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 {
}
Nach dem Login kopieren

Four

Fügen Sie einen Konfigurationsklassenvererbungs-WebMvcConfigurer hinzu, überschreiben Sie die Methode configurePathMatch und fügen Sie der Schnittstelle im Controller das entsprechende Präfix mit der Annotation ApiV1RestController für die Klasse hinzu.

@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));
    }
}
Nach dem Login kopieren

5. Testen

Sie müssen die Annotation @ApiV1RestController anstelle der Annotation @RestController auf dem entsprechenden Controller verwenden

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

So fügen Sie SpringBoot-Multicontrollern ein URL-Präfix hinzu

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage