Wann sollte ich AtomPub verwenden?

13

Ich habe einige Untersuchungen zum Design von RESTful-Webdiensten durchgeführt und bin zu einem meiner Meinung nach entscheidenden Punkt gelangt. Ich dachte, ich würde es der Community anbieten, um Ratschläge zu erhalten.

In Übereinstimmung mit den Prinzipien einer RESTful-Architektur möchte ich eine erkennbare API präsentieren, damit ich die verschiedenen HTTP-Verben so vollständig wie möglich unterstützen kann. Meine Schwierigkeit liegt in der Wahl der Repräsentation dieser Ressourcen. Sie sehen, es wäre einfach für mich, eine eigene API zu entwickeln, die beschreibt, wie Suchergebnisse dargestellt und wie Links zu anderen Ressourcen bereitgestellt werden. Dies ist jedoch für meine Anwendung einzigartig.

Ich habe über das Atom Publishing Protocol ( RFC 5023 ) gelesen und wie OData seine Verwendung fördert, aber es scheint eine zusätzliche Abstraktionsebene gegenüber einer (derzeit) recht einfachen API hinzuzufügen.

Meine Frage ist also, wann ein Entwickler AtomPub als Repräsentationswahl wählen sollte - wenn überhaupt? Und wenn nicht, wie lautet der derzeit empfohlene Ansatz?

Gary Rowe
quelle
1
Es gibt eine interessante Diskussion darüber hier: comments.gmane.org/gmane.comp.web.services.rest/16023
Gary Rowe

Antworten:

11

Nachdem ich dies gründlich untersucht habe, sind hier meine Ergebnisse:

Es scheint 3 primäre Formate und Ansätze zu geben: AtomPub, OData und HAL. Ich habe die Forschung für jedes unten zusammengefasst.

AtomPub

  • Pro: Gut etablierter Standard
  • Pro: Funktioniert mit XML und JSON
  • Pro: Hat hervorragende Java-Unterstützung durch Apache Abdera
  • Con: Abdera führt viele Abhängigkeiten ein
  • Con: Sehr komplex, um auf der Serverseite zu arbeiten
  • Con: Es ist schwierig, einen vollständigen JavaScript-Client zu erstellen

OData

  • Pro: Baut auf AtomPub auf
  • Pro: Funktioniert mit XML und JSON
  • Pro: Hat gute Java-Unterstützung durch das odata4j-Projekt
  • Pro: Bietet eine gute URI-Abfragestruktur

  • Con: Führt ein komplettes Framework ein (ersetzt im Wesentlichen Dropwizard)

  • Con: Sehr komplex zu arbeiten, insbesondere das Entity Data Model (EDM)
  • Con: Es ist schwierig, eine gute JavaScript-Clientbibliothek zu finden, ohne Windows-Tools für EDM zu verwenden

Hal

  • Pro: Führt einen leichten und erweiterbaren Ansatz ein
  • Pro: Funktioniert mit XML und JSON
  • Pro: Trivial, um ein JAXB-Modell zu erstellen, um es zu implementieren (keine Abhängigkeiten)
  • Pro: Bietet ein gutes Link-Framework
  • Pro: Trivial zum Erstellen eines JavaScript-Clients mit jQuery XML-Parsing
  • Con: Nicht ratifiziert (obwohl IETF angesprochen wurden)

Wann sollte ich AtomPub verwenden?

Wählen Sie AtomPub, wenn Sie mit der zusätzlichen Komplexität zufrieden sind und Standardbibliotheken für Ihre Kunden verwenden möchten. Dies ist wahrscheinlich der Fall, wenn Sie ein großes Dokumentrepository ausführen.

Ich habe in einem kürzlich erschienenen Blog-Artikel (der für diese Frage nicht relevant ist) weitere Details aufgeführt, die anderen möglicherweise helfen könnten.

Gary Rowe
quelle