Maison >Java >javaDidacticiel >Comment ajouter un préfixe d'URL à plusieurs contrôleurs SpringBoot

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

WBOY
WBOYavant
2023-05-12 18:37:202103parcourir
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;
}
.

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

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer