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 Réponses :
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.
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
.
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 { }
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/...
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?