¿Cuándo debo usar AtomPub?

13

He estado realizando algunas investigaciones sobre el diseño de servicios web RESTful y he llegado a lo que creo que es un punto de decisión clave, así que pensé en ofrecerlo a la comunidad para obtener algunos consejos.

De acuerdo con los principios de una arquitectura RESTful, quiero presentar una API reconocible, por lo que apoyaré los diversos verbos HTTP de la manera más completa posible. Mi dificultad viene con la elección de la representación de esos recursos. Verá, sería fácil para mí crear mi propia API que cubra cómo se presentan los resultados de búsqueda y cómo se proporcionan los enlaces a otros recursos, pero esto sería exclusivo de mi aplicación.

He leído sobre el Protocolo de publicación Atom ( RFC 5023 ) y cómo OData promueve su uso, pero parece agregar un nivel adicional de abstracción sobre lo que es (actualmente) una API bastante simple.

Entonces mi pregunta es, ¿cuándo debería un desarrollador seleccionar AtomPub como su elección de representación, si es que lo hace? Y si no, ¿cuál es el enfoque recomendado actual?

Gary Rowe
fuente
1
Aquí hay una discusión interesante sobre esto: comments.gmane.org/gmane.comp.web.services.rest/16023
Gary Rowe

Respuestas:

11

Después de investigar bastante sobre esto, aquí están mis hallazgos:

Parece que hay 3 formatos y enfoques principales: AtomPub, OData y HAL. He resumido la investigación para cada uno a continuación.

AtomPub

  • Pro: estándar bien establecido
  • Pro: funciona con XML y JSON
  • Pro: tiene un excelente soporte de Java a través de Apache Abdera
  • Con: Abdera presenta muchas dependencias
  • Con: muy complejo para trabajar en el lado del servidor
  • Con: difícil de construir un cliente completo de JavaScript

OData

  • Pro: se basa en AtomPub
  • Pro: funciona con XML y JSON
  • Pro: tiene un buen soporte de Java a través del proyecto odata4j
  • Pro: proporciona una buena estructura de consulta URI

  • Con: introduce un marco completo (esencialmente reemplaza a Dropwizard)

  • Con: Muy complejo para trabajar, particularmente el modelo de datos de entidad (EDM)
  • Contras: Difícil encontrar una buena biblioteca de cliente JavaScript sin depender de herramientas exclusivas de Windows para EDM

HAL

  • Pro: presenta un enfoque ligero y extensible
  • Pro: funciona con XML y JSON
  • Pro: Trivial para crear un modelo JAXB para implementarlo (sin dependencias)
  • Pro: proporciona un buen marco de enlace
  • Pro: Trivial para crear un cliente JavaScript usando el análisis jQuery XML
  • Con: No ratificado (aunque se ha abordado el IETF)

Entonces, ¿cuándo debo usar AtomPub?

De lo anterior, debe elegir AtomPub si está satisfecho con la complejidad adicional y desea utilizar bibliotecas estándar para sus clientes. Este probablemente sería el caso si está ejecutando un repositorio de documentos de gran tamaño.

He puesto más detalles (que está fuera del alcance de esta pregunta) en un artículo reciente del blog que podría ser de ayuda para otros.

Gary Rowe
fuente