Je développe actuellement une application REST avec Apache Camel (en utilisant camel-spring) et je rencontre un comportement déroutant. J'ai un ensemble de points de terminaison définis dans REST DSL, certains sont simplement des requêtes de proxy vers un autre serveur, et d'autres sont transmis à des routes que j'ai définies pour l'agrégation de données. Le DSL ressemble à ceci :
L'idée est que toutes les demandes sans URI correspondant exactement soient envoyées en proxy vers un autre système (qui n'est pas Apache Camel). Cela m'évite d'avoir à écrire une définition pour chaque API REST sur l'autre système (il y en a beaucoup).
Tout fonctionnait bien, jusqu'à ce que j'ajoute les deux demandes avec {custId} dans l'URI. Ces demandes fonctionnent bien, mais chaque fois que j'essaie une URI qui devrait passer en proxy, je reçois un 405 Method Not Allowed.
MODIFIER: J'aurais également dû mentionner que j'utilise Jetty comme composant REST. Camel fonctionne en standalone, en utilisant org.apache.camel.spring.Main pour le démarrer. Je l'appelle avec Postman à ce stade, et la réponse 405 semble provenir de Jetty/Camel.
La configuration REST ressemble à ceci (le gestionnaire de sécurité utilise le Jetty BasicAuthenticator) :
Les demandes de proxy sont toutes envoyées à la route direct:proxyOut, qui ressemble à ceci :
Une simple route sortante pour proxyer les demandes REST.
L'intention est que tout ce qui se trouve après /v1 dans l'URI soit transmis dans la demande en proxy. J'ai vérifié avec Wireshark et la demande n'est pas envoyée en proxy. Si je supprime les routes avec {custId} dans le chemin, tout fonctionne bien.
Fais-je quelque chose de mal ou s'agit-il d'un bug dans camel/camel-spring ?