Heim  >  Artikel  >  Java  >  So fügen Sie SpringBoot-Multicontrollern ein URL-Präfix hinzu

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

WBOY
WBOYnach vorne
2023-05-12 18:37:201941Durchsuche
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;
}

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 {
}

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));
    }
}

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();
    }
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen