premier notre scénario:comment publier plusieurs points d'extrémité de repos avec la même adresse de base?
nous avons un environnement OSGi, où plusieurs faisceaux publient leur propre point final de repos, par exemple:
http://localhost:8080/api/cars
http://localhost:8080/api/food
http://localhost:8080/api/toys
Cela a été fait en utilisant la méthode JAXRSServerFactoryBean.create(), avec adresse étant ceux énumérés ci-dessus.
Maintenant, nous devons ajouter un identifiant de locataire aux demandes des utilisateurs (pas l'autorisation de l'utilisateur, ce qui est différent, car les utilisateurs peuvent faire partie de plusieurs locataires). URL doivent ressembler à ceci:
http://localhost:8080/api/tenant/{tenantid}/cars
http://localhost:8080/api/tenant/{tenantid}/food
http://localhost:8080/api/tenant/{tenantid}/toys
J'ai essayé deux approches pour y parvenir maintenant:
- Ajouter locataire-id adresse du service (
http://localhost:8080/api/tenant/{tenantid}
) - Résultat: Je pourrais accéder à mon service sous l'URL donnée, mais je n'ai pas pu remplir de données pour tenantid mais j'ai dû taper {tenantid} dans l'URL, ce qui n'est pas la façon dont j'ai besoin de l'utiliser. - Publish les trois services sous la même URL (
http://localhost:8080/api
) le déplacement du locataire-partie à l'annotation @Path de chaque classe api - Résultat: Exception, cette adresse était déjà pris par un autre critère d'évaluation
Est-ce Quelqu'un at-il une idée, comment cela peut-il être fait correctement? Je sais que le ServiceBean peut prendre un ensemble d'implémenteurs en tant qu'argument au lieu d'une seule classe, mais ce n'est pas une option, car les paquets se chargent séparément et j'ai eu quelques problèmes de dépendances, quand j'ai essayé de faire "tout en un". En tant que sidenote: je sais, nous pourrions mettre l'identifiant du locataire dans un en-tête, mais généralement l'information du locataire est quelque part dans une URL (hôte ou chemin) et nous voulons aller avec ce style "commun" au lieu d'ajouter un en-tête personnalisé , bien que l'implémentation du style d'en-tête soit beaucoup plus facile (ça marche déjà).
Toutes les idées seraient utiles. Merci, Kay
d'autres idées? nous sommes sur le point de le faire en utilisant des paramètres de requête, ce que nous essayions d'éviter ... –