Unterschied zwischen OData- und REST-Webdiensten


196

Bei der Untersuchung einiger Webdienste bin ich auf diese "neue" Technologie gestoßen , die Microsoft OData nennt . Wenn ich ihre Beschreibung in den FAQ zu OData durchlese, fällt es mir schwer, OData von REST-vollständigen Webdiensten zu unterscheiden. Könnte mir bitte jemand helfen, die Unterschiede zu verstehen?


2
Einer ist Produzent, der andere ist Wegbereiter für die Verbraucher.
Kangkan

Antworten:


98

UPDATE Warnung, diese Antwort ist jetzt, da OData V4 verfügbar ist, extrem veraltet.


Ich schrieb vor einiger Zeit einen Beitrag zu diesem Thema hier .

Wie Franci sagte, basiert OData auf Atom Pub. Sie haben jedoch einige Funktionen überlagert und leider einige der REST-Einschränkungen im Prozess ignoriert.

Für die Abfragefunktion eines OData-Dienstes müssen Sie URIs basierend auf Informationen erstellen, die nicht verfügbar sind oder mit denen in der Antwort verknüpft ist. Es ist das, was REST-Leute Out-of-Band-Informationen nennen und eine versteckte Kopplung zwischen Client und Server einführen.

Die andere Kopplung, die eingeführt wird, ist die Verwendung von EDMX-Metadaten, um die im Eintragsinhalt enthaltenen Eigenschaften zu definieren. Diese Metadaten können an einem festen Endpunkt namens $ metadata ermittelt werden. Auch hier muss der Client dies im Voraus wissen, es kann nicht entdeckt werden.

Leider hielt Microsoft es nicht für angebracht, Medientypen zur Beschreibung dieser wichtigen Daten zu erstellen. Daher muss jeder OData-Client eine Reihe von Annahmen über den Dienst, mit dem er spricht, und die Daten, die er empfängt, treffen.


1
@felickz Entschuldigung. Ich hatte DNS-Probleme. Es sollte jetzt funktionieren. Oder wenn Ihr DNS-Cache abläuft.
Darrel Miller

6
Eigentlich ist das veraltet. In V3 von OData wurde 'JSON Light' hinzugefügt, das diese beiden Probleme (die eigentlich nur eines sind) behebt. Mit $ metadata können Sie also Abfragen erstellen. Es fehlte also nur ein Link zu $ ​​metadata in Ressourcendarstellungen. Das wurde hinzugefügt, sodass beide Probleme auf einmal verschwinden.
Alex James

10
@DarrelMiller Du hast erwähnt, dass deine Antwort jetzt veraltet ist. Möchten Sie ein Update mit Ihrer Meinung zum Thema hinzufügen? Es würde mich immer noch interessieren, den Unterschied zwischen OData 4 und REST zu kennen. Vielen Dank
Kurren

2
@Kurren Es ist auf meiner To-Do-Liste, aber leider ist es eine lange Liste.
Darrel Miller

2
@DarrelMiller Ich hoffe, Sie werden bald etwas Zeit finden, um den Beitrag zu aktualisieren und ihn mit OData V4 auf den neuesten Stand zu bringen.
LCJ

64

Das OData-Protokoll basiert auf dem AtomPub-Protokoll. Das AtomPub-Protokoll ist eines der besten Beispiele für das REST-API-Design. In gewissem Sinne haben Sie Recht - die OData ist nur eine weitere REST-API, und jede OData-Implementierung ist ein REST-vollständiger Webdienst.

Der Unterschied besteht darin, dass OData ein bestimmtes Protokoll ist. REST ist Architekturstil und Designmuster.


Ich könnte mich in dieser Sache irren (habe gerade angefangen, etwas über Odata zu lernen), aber ab Version 3 des [Protokolls] [ odata.org/documentation] scheint auch ein JSON-Format angegeben zu sein, das Sie alternativ verwenden können. Können Sie etwas Licht ins Dunkel bringen?
Johannes Rudolph

1
@ JohannesRudolph, ehrlich gesagt habe ich keine Ahnung. Ich habe OData in den letzten zwei Jahren nicht angeschaut. Es ist jedoch sehr wahrscheinlich, dass Microsoft JSON-Unterstützung hinzugefügt hat. Beachten Sie jedoch, dass dies keine der Antworten hier ändert. JSON vs XML ist nur eine Frage der Darstellung der REST-Ressourcen.
Franci Penov

1
Sie können in der Anfrage angeben, welches Format Sie haben möchten. XML und JSON sollten beide von den meisten Implementierungen unterstützt werden, indem beispielsweise der Accept-Header auf application / json gesetzt wird (ab OData Version 2)
i000174

31

REST ist eine generische Entwurfstechnik, mit der beschrieben wird, wie auf einen Webdienst zugegriffen werden kann. Mit REST können Sie http-Anforderungen stellen, um Daten abzurufen. Wenn Sie es in Ihrem Browser versuchen, ist es wie ein Besuch einer Website, außer dass Sie anstelle einer Webseite XML zurückerhalten. Einige Dienste geben auch Daten im JSON-Format zurück, das mit Javascript einfacher zu verwenden ist.

OData ist eine spezielle Technologie, die Daten über REST verfügbar macht.

Wenn Sie es ganz schnell zusammenfassen möchten, stellen Sie sich Folgendes vor:

  • REST - Designmuster
  • OData - Technologie

20

2012 wurde OData standardisiert, daher füge ich hier einfach ein Update hinzu.

Zuerst die Definitionen:

REST - ist eine Architektur zum Senden von Nachrichten über HTTP.

OData V4 - ist eine spezifische Implementierung von REST, definiert wirklich den Inhalt der Nachrichten in verschiedenen Formaten (derzeit denke ich, ist AtomPub und JSON). ODataV4 folgt den Ruheprinzipien.

Zum Beispiel verwenden asp.net-Leute meistens den WebApi-Controller, um Objekte in JSON zu serialisieren / deserialisieren und Javascript etwas damit machen zu lassen. Der Punkt von Odata ist die Möglichkeit, direkt von der URL mit sofort einsatzbereiten Optionen abzufragen.


10

Aus der OData- Dokumentation :

Das OData-Protokoll ist ein Protokoll auf Anwendungsebene für die Interaktion mit Daten über RESTful-Webdienste.

...

Das OData-Protokoll unterscheidet sich von anderen REST-basierten Webdienstansätzen darin, dass es eine einheitliche Möglichkeit bietet, sowohl die Daten als auch das Datenmodell zu beschreiben.


4

OData (Open Data Protocol) ist ein OASIS-Standard, der die Best Practice zum Erstellen und Verwenden von RESTful-APIs definiert. Mit OData können Sie sich beim Erstellen von RESTful-APIs auf Ihre Geschäftslogik konzentrieren, ohne sich Gedanken über die Ansätze zum Definieren von Anforderungs- und Antwortheadern, Statuscodes, HTTP-Methoden, URL-Konventionen, Medientypen, Nutzdatenformaten und Abfrageoptionen usw. machen zu müssen. OData führt Sie auch weiter Verfolgen von Änderungen, Definieren von Funktionen / Aktionen für wiederverwendbare Prozeduren und Senden von asynchronen / Batch-Anforderungen usw. Darüber hinaus bietet OData die Möglichkeit zur Erweiterung, um alle benutzerdefinierten Anforderungen Ihrer RESTful-APIs zu erfüllen.

OData RESTful-APIs sind einfach zu verwenden. Die OData-Metadaten, eine maschinenlesbare Beschreibung des Datenmodells der APIs, ermöglichen die Erstellung leistungsfähiger generischer Client-Proxys und -Tools. Einige von ihnen können Ihnen bei der Interaktion mit OData helfen, auch ohne etwas über das Protokoll zu wissen. Die folgenden 6 Schritte zeigen 6 interessante Szenarien des OData-Verbrauchs auf verschiedenen Programmierplattformen. Wenn Sie jedoch kein Entwickler sind und einfach nur mit OData spielen möchten, ist XOData der beste Start für Sie.

Weitere Informationen finden Sie unter http://www.odata.org/.


4

ODATA ist eine spezielle Art von REST, bei der Daten einheitlich über die URL abgefragt werden können .


2

REST steht für RE Präsentations - S tate T ransfer , die eine Ressource basiert architektonischen Stil ist. Ressourcenbasiert bedeutet, dass Daten und Funktionen als Ressourcen betrachtet werden.

OData ist ein webbasiertes Protokoll, das eine Reihe von Best Practices für die Erstellung und Nutzung von RESTful-Webdiensten definiert. OData ist eine Möglichkeit, RESTful-Webdienste zu erstellen, also eine Implementierung von REST.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.