2010-12-01 3 views
2

Existe-t-il un moyen standard (JAX-RS) pour résoudre les URI REST aux ressources côté serveur? Comme je comprends les pratiques courantes, il est préférable de fournir un URI complet comme identifiant pour les ressources. Si je veux permettre à quelqu'un POST/PUT un document comme celui-ci pour créer/modifier un produit:JAX-RS: Résoudre l'URI des ressources liées sur le serveur

<product> 
    [...] 
    <categories> 
     <category>http://.../rest/categories/12</category> 
     <category>http://.../rest/categories/35</category> 
    </categories> 
</product> 

Comme vous pouvez le voir, les références aux catégories sont leurs URIs de ressources. Du côté serveur, je dois maintenant résoudre ces URI aux ressources correspondantes. L'approche la plus simple serait de créer un client pour le service sur le serveur lui-même et de faire une demande GET standard sur ces URI. Mais je pense que cela ne devrait pas être nécessaire.

Existe-t-il un moyen standard de le faire? Y a-t-il un moyen CXF de le faire? Est-il préférable de toujours fournir un identifiant supplémentaire?

Merci.

Dominik

Répondre

0

Je pense que vous cherchez - http://jersey.java.net/nonav/apidocs/latest/jersey/com/sun/jersey/api/core/ResourceContext.html

Il ne provient pas d'CXF ou JAX-RS, mais de Jersey. Je l'ai utilisé pour analyser des documents comme dans votre exemple. Injectez-le en utilisant @Context dans votre ressource pour l'utiliser.

+0

Merci pour votre réponse. C'est exactement ce que je cherche. Malheureusement, je ne peux pas utiliser Jersey. Je vois qu'il y a une méthode UriInfo.getMatchedResources() dans la norme. Est-ce que cela aiderait? Comment puis-je créer une nouvelle instance d'UriInfo? – raymi

+0

Désolé n'a pas remarqué le commentaire plus tôt. @Context UriInfo DI placerait l'instance actuelle d'UriInfo dans une ressource et je ne suis pas sûr du comportement de la méthode getMatchedResources(), je ne l'ai pas utilisé plus tôt. – imyousuf

Questions connexes