2017-10-17 10 views
0

J'essaye de construire un module à brancher dans une application Spring Boot. Ce module devrait exposer certains points de terminaison REST et j'essayer de les construire avec Camel parce que je ne veux pas avoir à ajouter des choses à web.xml, etc.Endpoint Camel Rest Apache avec DSL dans Spring Boot ajoute/camel au chemin

restConfiguration().component("servlet") 
     .contextPath("/my") 
     .apiContextPath("/api-doc") 
     .apiProperty("api.title", "My REST API") 
     .apiProperty("cors", "true") 
     .apiContextRouteId("my-api") 
     .bindingMode(RestBindingMode.json); 

rest("/my").description("My REST Services") 
     .get("foo/{id}").route().routeId("foo") 
     .to("direct:foo"); 

from("direct:foo") 
     .process(new FooParamParser()) 
     .log("Done"); 

Le problème que je vais avoir est que Au lieu d'être à/my/foo/123? status = abc Je dois le frapper sur/camel/my/foo/123? status = abc. Il le fait parce qu'il utilise par défaut le Camel Servlet comme point de terminaison REST de la DSL, et je vais bien avec ça, mais je ne veux pas qu'il mette le "/ camel" au début de mon chemin. Je devrais noter que ce comportement est le même avec ou sans le .component("servlet")

Tout moyen de changer cela?

Répondre

0

Vous pouvez contrôler dans vos application.properties ou application.yml

par exemple

camel.component.servlet.mapping.contextPath=/api/* 

Référence https://github.com/apache/camel/blob/master/examples/camel-example-spring-boot-rest-jpa/src/main/resources/application.yml

+0

Merci! Y a-t-il un moyen de le rendre spécifique à cette instance plutôt que global? Nous pouvons avoir plusieurs de ces modules complémentaires et chacun devrait être sous son propre chemin de contexte. –

+0

Je ne comprends pas très bien le concept d'instance/global dans votre configuration, mais vous pouvez utiliser/* dans les propriétés, s'il n'y a pas d'autre conflit, puis définir le chemin de contexte distinct pour chaque service dans la DSL – ltsallas