Maison > Java > javaDidacticiel > le corps du texte

Comment ajouter un préfixe d'URL à plusieurs contrôleurs SpringBoot

WBOY
Libérer: 2023-05-12 18:37:20
avant
2038 Les gens l'ont consulté
Avant-propos

Dans certains cas, les préfixes du contrôleur de service sont cohérents. Par exemple, le préfixe de toutes les URL est /context-path/api/v1, et un préfixe unifié doit être ajouté à certaines URL.

La solution envisageable consiste à modifier le chemin contextuel du service et à ajouter api/v1 au chemin contextuel. La modification du préfixe global peut résoudre le problème ci-dessus, mais il existe des inconvénients si l'URL a plusieurs préfixes, tels que. certaines URL Si vous devez le préfixer avec api/v2, vous ne pouvez pas faire la différence. Si vous ne souhaitez pas ajouter api/v1 à certaines ressources statiques du service, vous ne pouvez pas non plus faire la différence.

Ce qui suit est l'ajout unifié de certains préfixes d'URL via des annotations personnalisées.

1. Ajoutez une configuration de préfixe dans le fichier de configuration

Si vous avez besoin de plusieurs préfixes, ajoutez plusieurs ensembles de configurations, par exemple, ajoutez : api.prefix.v2=/api/v2

####### #### ####configuration du préfixe d'url#################
api.prefix.v1=/api/v1

2. Configurez l'entité mappée

@Data
@Component
@ConfigurationProperties(prefix = "api.prefix")
public class ApiPrefix {
    private String v1;
}
Copier après la connexion
.

3. Annotation personnalisée

Cette fonction d'annotation est cohérente avec @RestController et correspond à la configuration de api.prefix.v1. S'il existe plusieurs ensembles de configurations, définissez simplement plusieurs annotations

@RestController
@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiV1RestController {
}
Copier après la connexion

4. Ajoutez un préfixe à PathMatch personnalisé

.

Ajoutez un héritage de classe de configuration WebMvcConfigurer, remplace la méthode configurePathMatch et ajoute le préfixe correspondant à l'interface dans le contrôleur avec l'annotation ApiV1RestController sur la classe.

@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));
    }
}
Copier après la connexion

5. Tests

Vous devez utiliser l'annotation @ApiV1RestController au lieu de l'annotation @RestController sur le contrôleur correspondant

@ApiV1RestController
@RequestMapping("/test/apiv1")
public class TestApiV1RestController {
    @GetMapping()
    public ResponseEntity get() {
        return new ResponseEntity();
    }
}
Copier après la connexion

Comment ajouter un préfixe dURL à plusieurs contrôleurs SpringBoot

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal