2010-08-06 7 views
1

Je développe un service RESTful dans lequel des processus peuvent être exécutés et fournit un calcul résultant. Pour cela, j'ai modélisé le processus lui-même en tant que ressource (exemple:/processes/translate). Je veux exécuter le processus en envoyant une requête GET avec le paramètre d'entrée ajouté comme paramètre de requête (Exemple:/processes/translate? Input1 = xxxx & input2 = xxxxx).Comment décrire le paramètre d'entrée dans un service Web RESTful

Chaque processus a un paramètre d'entrée différent qui est défini lors de la création du processus dans le backend. Ma question est de savoir comment documenter ou décrire les entrées nécessaires pour exécuter un processus sous une forme lisible par une machine. Par exemple en XML.

Jusqu'à présent, les éléments atom: link intégrés dans la représentation. Je pensais que peut-être y compris XFORM pourrait être une solution?

Cordialement André

Répondre

2

Je ne modéliser cela avec un GET. Bien que ce soit la solution la plus facile, c'est aussi (OMI) le moins RESTful. J'aurais des clients POSTER un document décrivant ce qu'ils veulent que vous traduisiez et votre service leur renvoie un URI où leur réponse peut être trouvée (certaines traductions pourraient prendre un certain temps).

Exemple (ommiting beaucoup d'en-têtes HTTP/contexte)

POST /processes/translate 
Content-Type: application/xml 
... 

<translation-request> 
    <input1 type="type1">....</input1> 
    <input2 type="type5">....</input2> 
</translation-request> 

Réponse:

200 OK 
Content-Location: /processes/translate/jobs/1234 
.... 
+0

Merci pour votre réponse. J'utilise aussi votre façon recommandée. Je veux offrir deux d'exécution, une exécution à la volée suivant le modèle décrit dans Restful Web Services Cookbook (en utilisant GET) et une exécution asynchrone d'un processus, comme vous l'avez décrit (avec POST). Je suis à la recherche d'une meilleure pratique pour donner à un client l'information pour le paramètre d'entrée dont le processus a besoin et comment l'intégrer, par exemple dans une réprésentation d'atome. Désolé pour mon anglais! – user345992

+0

Eh bien le format convenu (comme une représentation Atom) est quelque chose que REST dit peut être fait hors bande. Il est vraiment presque impossible d'envoyer au client quelque chose qu'une machine peut interpréter et "remplir les blancs" avec les formats corrects. Avoir un wiki/FAQ/tout ce qui décrit le format excepté pour une requête synchrone et asynchrone doit juste être disponible pour les clients. – Gandalf

0

C'est toujours une question intéressante. Nous avons un projet appelé RESTx (http://restx.org), avec lequel vous pouvez créer RESTful web services très facilement. Vous pouvez écrire du code de composant personnalisé en Java ou en Python, puis créer RESTful resources en envoyant des jeux de paramètres au serveur, qui sont ensuite stockés. Cependant, chaque jeu de paramètres obtient son propre URI, de sorte que vous pouvez toujours exécuter le code avec ces paramètres en accédant à l'URI du nouvel ensemble de paramètres. Il est important de noter que toute l'API RESTful est créée automatiquement. RESTx examine le code du composant, puis assemble la description de l'API. Nous avons décidé de décrire les paramètres d'une manière humaine et lisibles par machine. Vous pouvez voir des exemples de ce que cela ressemble in a browser ou in plain JSON.

Je suis le développeur principal sur ce sujet, alors n'hésitez pas à me contacter pour toute question que vous pourriez avoir.

+0

Merci. Je vais jeter un coup d'oeil. Cela a l'air très intéressant. – user345992

Questions connexes