Différence entre les services Web OData et REST

196

En examinant certains services Web, j'ai rencontré cette "nouvelle" technologie que Microsoft appelle OData . En lisant leur description dans la FAQ sur ce qu'est OData, j'ai du mal à distinguer OData des services Web REST. Quelqu'un pourrait-il m'aider à comprendre les différences?

Scott
la source
2
L'un est producteur, l'autre est facilitateur pour les consommateurs.
Kangkan

Réponses:

98

MISE À JOUR 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 ici .

Comme l'a dit Franci, 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 basés sur des informations qui ne sont pas disponibles ou liées à dans la réponse. C'est ce que les gens REST appellent des informations hors bande et introduit un couplage caché entre le client et le serveur.

L'autre couplage introduit est l'utilisation de métadonnées EDMX pour définir les propriétés contenues dans le contenu d'entrée. Ces métadonnées peuvent être découvertes à un point de terminaison fixe appelé $ métadonnées. Encore une fois, le client doit le savoir à l'avance, cela ne peut pas être découvert.

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

Darrel Miller
la source
1
@felickz Désolé à ce sujet. J'avais des problèmes DNS. Cela devrait fonctionner maintenant. Ou le sera lorsque votre cache DNS expirera.
Darrel Miller,
6
En fait , c'est à jour. La V3 d'OData a ajouté `` JSON Light '' qui répond à ces deux préoccupations (qui ne sont en réalité qu'une seule), c'est-à-dire que $ metadata est la façon dont vous savez créer des requêtes, donc tout ce qui manquait est un lien vers $ metadata dans les représentations de ressources. Cela a été ajouté, donc les deux problèmes disparaissent en une seule fois.
Alex James
10
@DarrelMiller Vous avez mentionné que votre réponse est désormais obsolète. Voulez-vous ajouter une mise à jour avec votre opinion sur le sujet? Je serais toujours intéressé à connaître la différence entre OData 4 et REST. Merci beaucoup
Kurren
2
@Kurren C'est sur ma liste de choses à faire, mais malheureusement c'est une longue liste.
Darrel Miller
2
@DarrelMiller J'espère que vous trouverez un peu de temps pour mettre à jour le message très bientôt pour le mettre à jour avec OData V4.
LCJ
64

Le protocole OData est construit au-dessus du protocole AtomPub. Le protocole AtomPub est l'un des meilleurs exemples de conception d'API REST. Donc, dans un sens, vous avez raison - l'OData n'est qu'une autre API REST et chaque implémentation 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 motif de conception.

Franci Penov
la source
Je peux me tromper à ce sujet (je viens de commencer à apprendre sur odata), mais à partir de la version 3 du [protocole] [ odata.org/documentation], il apparaît également un format JSON spécifié, que vous pouvez utiliser alternativement. Pouvez-vous nous éclairer là-dessus?
Johannes Rudolph
1
@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 fort probable que Microsoft aurait ajouté le support JSON. Notez cependant que cela ne change en rien les réponses ici. JSON vs XML n'est qu'une question de présentation des ressources REST.
Franci Penov
1
Vous pouvez spécifier dans la demande le format que vous souhaitez avoir. XML et JSON doivent être pris en charge par la plupart des implémentations, par exemple en définissant l'en-tête Accept sur application / json (à partir d'OData version 2)
i000174
32

REST est une technique de conception générique utilisée pour décrire comment 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, ce serait comme aller sur un site Web, mais au lieu de renvoyer une page Web, vous récupérerez XML. Certains services renvoient également des données au format JSON qui est plus facile à utiliser avec Javascript.

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

Si vous voulez le résumer très rapidement, pensez-y comme:

  • REST - modèle de conception
  • OData - technologie habilitante
Rush Frisby
la source
20

En 2012, OData a subi une normalisation, je vais donc simplement ajouter une mise à jour ici ..

D'abord les définitions:

REST - est une architecture de la façon d'envoyer des messages via HTTP.

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

Par exemple, les personnes asp.net utiliseront principalement le contrôleur WebApi pour sérialiser / désérialiser des objets en JSON et demander à javascript de faire quelque chose avec. Le point d'Odata est de pouvoir interroger directement à partir de l'URL avec des options prêtes à l'emploi.

tatigo
la source
10

De la documentation OData :

Le protocole OData est un protocole au niveau de l'application pour interagir avec les données via les services Web RESTful.

...

Le protocole OData est différent des autres approches de service Web basées sur REST en ce qu'il fournit une manière uniforme de décrire à la fois les données et le modèle de données.

mcanti
la source
4

OData (Open Data Protocol) est une norme OASIS qui définit les meilleures pratiques pour la création et la consommation d'API RESTful. OData vous aide à vous concentrer sur votre logique métier tout en créant des API RESTful sans avoir à vous soucier des approches pour définir les en-têtes de demande et de réponse, les codes d'état, les méthodes HTTP, les conventions URL, les types de média, les formats de charge utile et les options de requête, etc. OData vous guide également sur suivre les modifications, définir les fonctions / actions pour les procédures réutilisables et envoyer des demandes asynchrones / par lots, etc. En outre, OData fournit une fonction d'extension pour répondre à tous les besoins personnalisés de vos API RESTful.

Les API OData RESTful sont faciles à utiliser. Les métadonnées OData, une description lisible par machine du modèle de données des API, permettent la création de puissants proxy et outils client génériques. Certains d'entre eux peuvent vous aider à interagir avec OData même sans rien savoir du protocole. Les 6 étapes suivantes présentent 6 scénarios intéressants de consommation OData sur différentes plates-formes de programmation. Mais si vous n'êtes pas développeur et que vous souhaitez simplement jouer avec OData, XOData est le meilleur début pour vous.

pour plus de détails sur http://www.odata.org/

RajeshVerma
la source
4

ODATA est un type spécial de REST où nous pouvons interroger les données uniformément à partir de l'URL.

Minh Nguyen
la source
2

REST signifie RE presentational S tate T ransfer qui est un style architectural basé sur les ressources. Basé sur les ressources signifie que les données et les fonctionnalités sont considérées comme des ressources.

OData est un protocole Web qui définit un ensemble de meilleures pratiques pour la création et la consommation de services Web RESTful. OData est un moyen de créer des services Web RESTful donc une implémentation de REST.

Ishara
la source