2
votes

Comment ajouter du texte à toutes les URL du contrôleur au printemps

Nous avons déjà développé des API REST dans SpringBoot.

Nous voulons maintenant ajouter du texte (version de l'API par exemple / v1 / ) à tous les @RequestMapping .

Y a-t-il un moyen de faire cela sauf d'ajouter / v1 / à chaque @RequestMapping


exemple: RequestMapping actuel / employess et / cars / 1 / driver

Besoin de construire comme ceci / v1 / employess et /v1/cars/1/driver


3 commentaires

Pourriez-vous ajouter un exemple de la façon dont vos mappages actuels sont définis?


@Arnaud a mis à jour la question


@MehrajMalik Avez-vous eu l'occasion de tester mes solutions?


3 Réponses :


0
votes

Vous pouvez le faire d'au moins deux façons.

Option 1: étendez AbstractAnnotationConfigDispatcherServletInitializer comme ci-dessous:

@RestController
@RequestMapping("/v1")
public class Controller {
}

Option 2: ajoutez un mappage de requête au niveau de la classe sur les contrôleurs dont vous souhaitez ajouter la version comme ci-dessous

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {


    @Override
    protected String[] getServletMappings() {
        return new String[] { "/v1/*" };
    }

}

Je choisirais l'option 1.


0 commentaires

0
votes

Vous pouvez utiliser cette propriété dans votre fichier application.properties :

@RestController
@RequestMapping(value = "${rest.api.version}")
public class MyAbstractController {
}

ou vous pouvez avoir une classe de contrôleur de base et l'étendre avec toutes vos classes de contrôleur

server.servlet.contextPath=/v1

et stockez rest.api.version dans votre fichier application.properties .


0 commentaires

0
votes

Si vous souhaitez ajouter à chaque requête "/ v1", vous pouvez le faire en utilisant l'annotation @RequestMapping au niveau de la classe, de cette manière tous les appels entrants (qui contient "/ v1") arriveront votre contrôleur

@RestController
@RequestMapping("/v1")
public class YourController {
}


3 commentaires

J'ai demandé All Controller, pas seulement un contrôleur!


J'ai trouvé la solution: mhdevelopment.wordpress.com/2016/10 / 03 /…


duplication possible de cette question: stackoverflow.com/questions/34801351/...