2012-06-07 1 views
2

J'ai un service REST pour lequel j'ai un fichier WADL. Je veux renvoyer ce fichier et accéder aux méthodes de celui-ci. Le contenu du fichier WADL est comme ci-dessous:Comment accéder aux méthodes du fichier WADL en Java?

<resource path="/loadPerson"> 
    <method id="loadPerson" name="GET"> 
     <request> 
      <param xmlns:xs="http://www.w3.org/2001/XMLSchema" name="personId" style="query" type="xs:int"/> 
     </request> 
     <response> 
      <ns2:representation xmlns:ns2="http://wadl.dev.java.net/2009/02" xmlns="" element="person" mediaType="application/xml"/> 
      <ns2:representation xmlns:ns2="http://wadl.dev.java.net/2009/02" xmlns="" element="person" mediaType="application/json"/> 
     </response> 
    </method> 
</resource> 

En fait, je ne reçois pas comment aborder vers elle, comme je l'ai jamais joué avec les fichiers WADL avant. Que devrais-je faire?

+0

Ce n'est pas une vraie question, non? Vous le google. – Alexander

+1

@Alexander: J'ai fait beaucoup de google, mais je n'ai pas trouvé la solution exacte à laquelle je m'attendais. Fondamentalement, je comprends comment gérer les paramètres de requête et de réponse de ce fichier WADL. Corrigez-moi si je me trompe que, selon ma compréhension dans la partie ci-dessus posté du code du fichier WADL "loadPerson" est une méthode et personID est un paramètre d'entrée. Mais comment y accéder en Java? quelles choses j'avais besoin de faire ça? –

+0

Je pense que mon commentaire est toujours valable. – Alexander

Répondre

3

Le <resource> identifie une URL (par rapport à une URL de base spécifiée comme un attribut base sur un élément <resources> extérieur que vous ne présentez pas) que vous interagir avec d'une manière RESTful. Le <method> a un attribut name de GET, ce qui signifie que pour utiliser cette opération particulière, vous faites un GET sur l'URL de la ressource. Le <request> interne a un <param> donc nous savons ajouter un paramètre de requête à l'URL GET; dans ce cas, ce sera personId=123 (ou un autre entier). Le <response> nous dit que nous pouvons récupérer la réponse en XML ou en JSON; nous devrions utiliser la négociation de contenu HTTP pour dire lequel.

Il y a un bug mineur dans le WADL en ce qu'il spécifie l'URL <resource> avec un /; cela risque fort de causer des problèmes avec l'outillage car il essaie d'assembler une URL correcte, mais nous pouvons toujours dire ce que sera l'URL (de savoir comment les webapps RESTful ont tendance à être implémentées).

En supposant que l'extérieur <resources> dit que l'URL de base est http://example.org/foobar (et il n'y a pas <resource> intermédiaires éléments, WADL permet que), le WADL dit que si vous faites une requête GET sur http://example.org/foobar/loadPerson?personId=123 avec votre client HTTP configuré pour préférer XML, vous obtiendrez un élément <person> en tant que corps de la réponse HTTP (ou une erreur, par exemple, si il n'y a pas de correspondance pour un tel personId ou si vous n'êtes pas autorisé à le savoir).

+0

J'ai couru mon projet et ai également essayé d'accéder à la méthode d'URL en tant que http: // localhost: 8080/proj-nom/ressource-chemin/loadPerson? PersonId = 123 mais j'ai eu l'erreur sur le navigateur comme HTTP 401 - non autorisé. (Dans ce cas, resource-path =/loadPerson). Est-ce la bonne façon d'appeler? Je pense que c'est correct car il s'agit d'une erreur de non-autorisation. –

+0

Une autre méthode que j'ai essayé d'accéder à partir du même fichier WADL en entrant une URL comme: http: // localhost: 8080/openempi-admin/openempi-ws-reste/personne-requête-ressource/findRaceByCode /? Method = findRaceByCode() & raceCode = 100. Mais j'ai la même erreur d'authentification. :( –

Questions connexes