200 votes

Différence entre les services web OData et REST

Quelle est la différence entre OData et des services web de type REST ?

2 votes

L'un est producteur, l'autre est un facilitateur pour les consommateurs.

100voto

Darrel Miller Points 56797

UPDATE Attention, cette réponse est extrêmement obsolète maintenant que OData V4 est disponible.


J'ai écrit un article sur le sujet il y a quelque temps. aquí .

Comme Franci l'a dit, OData est basé sur Atom Pub. Cependant, ils ont superposé certaines fonctionnalités et ont malheureusement ignoré certaines des contraintes REST dans le processus.

La capacité d'interrogation d'un service OData vous oblige à construire des URI sur la base d'informations qui ne sont pas disponibles ou liées à la réponse. C'est ce que les gens de REST appellent l'information hors bande et introduit un couplage caché entre le client et le serveur.

L'autre couplage qui est introduit est l'utilisation des métadonnées EDMX pour définir les propriétés contenues dans le contenu de l'entrée. Ces métadonnées peuvent être découvertes à un point de terminaison fixe appelé $metadata. Là encore, le client doit les connaître à l'avance, elles ne peuvent pas être découvertes.

Malheureusement, Microsoft n'a pas jugé bon de créer des types de médias pour décrire ces éléments de données essentiels, de sorte que tout client OData doit faire un tas d'hypothèses sur le service auquel il s'adresse et sur les données qu'il reçoit.

0 votes

Votre lien est cassé :( www.bizcoder.com/index.php/2009/11/30/oh-data/

1 votes

@felickz Désolé pour ça. J'ai eu des problèmes de DNS. Cela devrait fonctionner maintenant. Ou le sera lorsque votre cache DNS expirera.

0 votes

Cette réponse peut être dépassée maintenant car le client n'est pas seulement microsoft et mentionne edmx seulement si vous utilisez un environnement .net

68voto

Franci Penov Points 45358

Le protocole OData est construit sur le protocole AtomPub. Le protocole AtomPub est l'un des meilleurs exemples de conception d'API REST. Dans un sens, vous avez donc raison : OData n'est qu'une autre API REST et chaque mise en œuvre d'OData est un service web REST.

La différence est que OData est un protocole spécifique ; REST est un style d'architecture et un modèle de conception.

0 votes

Je peux me tromper (je viens de commencer à me familiariser avec les odata), mais à partir de la version 3 du [protocole][[ ]. [odata.org/documentation]](http://www.odata.org/documentation]) il semble qu'il existe également un format JSON spécifié, que vous pouvez utiliser comme alternative. Pouvez-vous nous éclairer à ce sujet ?

1 votes

@JohannesRudolph, honnêtement, je n'en ai aucune idée. Je n'ai pas regardé OData au cours des deux dernières années. Mais il est tout à fait probable que Microsoft aurait ajouté le support JSON. Notez cependant que cela ne change en rien les réponses données ici. JSON vs XML est juste une question de présentation des ressources REST.

1 votes

Vous pouvez préciser dans la demande le format que vous souhaitez obtenir. XML et JSON devraient être supportés par la plupart des implémentations, par exemple en définissant l'en-tête Accept sur application/json (à partir de OData version 2).

32voto

rushonerok Points 2753

REST est une technique de conception générique utilisée pour décrire la manière dont on peut accéder à un service web. En utilisant REST, vous pouvez faire des requêtes http pour obtenir des données. Si vous l'essayez dans votre navigateur, c'est comme si vous alliez sur un site Web, sauf qu'au lieu de renvoyer une page Web, vous recevriez du XML. Certains services renvoient également des données au format JSON, plus facile à utiliser avec Javascript.

OData est une technologie spécifique qui expose les données via REST.

Si vous voulez le résumer rapidement, pensez-y comme suit :

  • REST - modèle de conception
  • OData - technologie habilitante

0 votes

REST n'est pas limité à HTTP ou au web

21voto

tatigo Points 508

En 2012, OData a fait l'objet d'une normalisation, donc je vais juste ajouter une mise à jour ici .

D'abord les définitions :

REST - est une architecture de la manière d'envoyer des messages sur HTTP.

OData V4 - est une implémentation spécifique de REST, qui définit réellement le contenu des messages dans différents formats (actuellement, je pense que c'est AtomPub et JSON). ODataV4 suit les principes de REST.

Par exemple, les utilisateurs d'asp.net utiliseront principalement le contrôleur WebApi pour sérialiser/désérialiser des objets en JSON et faire en sorte que javascript en fasse quelque chose. L'intérêt d'Odata est de pouvoir effectuer des requêtes directement depuis l'URL avec avec des options prêtes à l'emploi.

10voto

mcanti Points 596

Depuis l'OData documentation :

Le protocole OData est un protocole de niveau application permettant d'interagir avec les données via des services web RESTful.

...

Le protocole OData se distingue des autres approches de services Web basées sur REST en ce qu'il fournit un moyen uniforme de décrire à la fois les données et le modèle de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X