2011-04-19 5 views
2

Je suis nouveau dans l'arène des services RESTful. J'ai parcouru les articles sur REST. Et j'ai beaucoup de doutes. Aidez-moi s'il vous plaît à effacer ces doutes. Merci d'avance.Quelques doutes sur les services web RESTful?

1) Pour tous les services Web RESTful, y aura-t-il un WSDL/WADL pour décrire le service? Est-il obligatoire d'avoir une description du service? S'il n'y a pas de description, comment puis-je connaître les données et leur structure que je dois envoyer le HTTPRequest? Je lis comme, le contenu de la requête pourrait être de n'importe quel type (XML, JSON, YAML etc.). Et il n'y a aucune restriction pour le type de contenu qui pourrait être envoyé avec demande. Sans une description, comment puis-je connaître le type de données que je suis censé envoyer?

2) En parcourant les articles, j'ai l'impression que les services RESTful sont principalement utilisés pour des services de type CRUD. Différents verbes HTTP pour différentes opérations. Mais si vous prenez des services Web, il peut faire toutes sortes d'opérations. Par exemple, l'ajout de 2 chiffres n'est pas exactement une opération CRUD. Si j'utilise GET/POST à ​​la ressource qui pourrait faire ces opérations pour moi, alors ce sera une violation des principes REST?

3) Si vous pouvez me diriger vers des services Web RESTful publics qui pourraient être utilisés pour les tests, je pourrais essayer d'utiliser le service et avoir une idée de la complexité des services.

Merci à l'avance,
Paul

Répondre

4

Il n'y a normalement pas lisible par machine description du service. Vous savez généralement ce qu'il faut envoyer en lisant la documentation du service.

REST ne se limite pas à CRUD et les méthodes sont PUT/GET/POST/DELETEpas nécessairement les mêmes que créer/récupérer/mettre à jour/supprimer. Les services basés sur REST peuvent faire tout ce que les services Web basés sur SOAP peuvent faire. Il est complètement RESTful d'envoyer une demande GET à un URI comme http://example.com/add?3,5.

Vous pouvez trouver une liste des services REST au http://www.programmableweb.com/apis/directory/1?protocol=REST.

+0

Merci pour la réponse. J'ai vérifié les services REST à partir de l'URL que vous avez fournie. J'ai trouvé qu'il n'y a aucune description de service pour les services là-bas. Du côté client, nous ne serons donc pas en mesure d'utiliser des outils de génération de code. Il est jusqu'à l'utilisateur, pour créer la demande et invoquer. Cette approche est correcte, si le service est assez simple. Mais si le service est complexe, ne serait-ce pas génial d'avoir un générateur de code? –

+0

Les générateurs de code ne sont pas nécessaires autant pour les services REST que pour les services SOAP, et bien que la génération de code ait ses propres problèmes, oui, il serait quand même agréable de l'avoir. Les services REST populaires, comme l'API graphique de Facebook, ont des bibliothèques disponibles. –

1

réponse à votre première question:

WSDL/WADL est pas obligatoire pour webservices reposant. En outre, la liaison HTTP WSDL 1.1 était insuffisante pour décrire un service Web reposant.

Toutefois, WSDL 2.0 peut être utilisé pour le décrire. Un service Web reposant doit être utilisé lorsque le client et le fournisseur ont une compréhension mutuelle du contrat.

Jetez un oeil à: http://www.ibm.com/developerworks/webservices/library/ws-restwsdl/

Deuxièmement: Oui, vous pouvez accomplir presque tout des opérations de CRUD. Comme indiqué dans la réponse précédente http://example.com/add?3,5. est un crud valide.

0
  1. Aucun fichier WSDL/WADL. Vous obtenez le protocole HTTP (par exemple GET, POST, UPDATE, DELETE) et tout le reste dépend de vous. Assurez-vous de documenter vos entrées et sorties attendues en conséquence. Non, les services Web RESTful ne sont pas limités à CRUD. Pour votre service d'ajout, je l'implémenterais comme une ressource "additionneur" qui prendrait comme entrée les 2 nombres à ajouter. Vous pouvez prendre ces entrées dans le cadre du chemin d'URL (http://votredomaine.com/adder/1/2) ou dans les paramètres de la chaîne de requête (http://votredomaine.com/adder?var1 = 2 & var2 = 2) ou en tant qu'entrées d'un HTTP POST. Dépend de vous.