Quand dois-je utiliser AtomPub?

13

J'ai mené des recherches sur la conception de services Web RESTful et j'ai atteint ce que je pense être un point de décision clé, alors j'ai pensé que je l'offrirais à la communauté pour obtenir des conseils.

Conformément aux principes d'une architecture RESTful, je souhaite présenter une API détectable, donc je prendrai en charge les différents verbes HTTP aussi complètement que possible. Ma difficulté vient du choix de la représentation de ces ressources. Vous voyez, il serait facile pour moi de trouver ma propre API qui couvre la façon dont les résultats de la recherche doivent être présentés et comment les liens vers d'autres ressources sont fournis, mais cela serait unique à mon application.

J'ai lu sur le protocole de publication Atom ( RFC 5023 ) et comment OData promeut son utilisation, mais il semble ajouter un niveau d'abstraction supplémentaire par rapport à ce qui est (actuellement) une API assez simple.

Donc ma question est, quand un développeur devrait-il choisir AtomPub comme choix de représentation - le cas échéant? Sinon, quelle est l'approche actuellement recommandée?

Gary Rowe
la source
1
Il y a une discussion intéressante à ce sujet ici: comments.gmane.org/gmane.comp.web.services.rest/16023
Gary Rowe

Réponses:

11

Après avoir fait pas mal de recherches à ce sujet, voici mes conclusions:

Il semble y avoir 3 formats et approches principaux: AtomPub, OData et HAL. J'ai résumé la recherche pour chacun ci-dessous.

AtomPub

  • Pro: Norme bien établie
  • Pro: fonctionne avec XML et JSON
  • Pro: Possède un excellent support Java via Apache Abdera
  • Con: Abdera introduit beaucoup de dépendances
  • Con: très complexe à travailler côté serveur
  • Con: Difficile de construire un client JavaScript complet

OData

  • Pro: s'appuie sur AtomPub
  • Pro: fonctionne avec XML et JSON
  • Pro: A un bon support Java via le projet odata4j
  • Pro: fournit une bonne structure de requête URI

  • Con: introduit un cadre complet (remplace essentiellement Dropwizard)

  • Con: très complexe à travailler, en particulier le modèle de données d'entité (EDM)
  • Con: Difficile de trouver une bonne bibliothèque client JavaScript sans compter sur des outils Windows uniquement pour EDM

HAL

  • Pro: présente une approche légère et extensible
  • Pro: fonctionne avec XML et JSON
  • Pro: Trivial pour créer un modèle JAXB pour l'implémenter (pas de dépendances)
  • Pro: fournit un bon cadre de liaison
  • Pro: Trivial pour créer un client JavaScript à l'aide de l'analyse XML jQuery
  • Inconvénient: non ratifié (bien que l'IETF ait été approché)

Alors, quand dois-je utiliser AtomPub?

À partir de ce qui précède, vous devez choisir AtomPub si vous êtes satisfait de la complexité supplémentaire et souhaitez utiliser des bibliothèques standard pour vos clients. Ce serait probablement le cas si vous exécutez un grand référentiel de documents.

J'ai mis plus de détails (ce qui est hors de portée pour cette question) dans un article de blog récent qui pourrait être utile aux autres.

Gary Rowe
la source