Diferencia entre los servicios web OData y REST

196

Mientras buscaba en algunos servicios web, me encontré con esta "nueva" tecnología que Microsoft llama OData . Al leer su descripción en las Preguntas frecuentes sobre qué es OData, me cuesta distinguir OData de los servicios web REST-ful. ¿Podría alguien ayudarme a entender las diferencias?

Scott
fuente
2
Uno es productor, el otro es facilitador para los consumidores.
Kangkan

Respuestas:

98

ACTUALIZACIÓN Advertencia, esta respuesta está extremadamente desactualizada ahora que OData V4 está disponible.


Escribí una publicación sobre el tema hace un tiempo aquí .

Como dijo Franci, OData se basa en Atom Pub. Sin embargo, han superpuesto algunas funcionalidades y desafortunadamente han ignorado algunas de las restricciones REST en el proceso.

La capacidad de consulta de un servicio OData requiere que usted construya URI basados ​​en información que no está disponible o vinculada en la respuesta. Es lo que las personas REST llaman información fuera de banda e introduce un acoplamiento oculto entre el cliente y el servidor.

El otro acoplamiento que se introduce es mediante el uso de metadatos EDMX para definir las propiedades contenidas en el contenido de la entrada. Estos metadatos se pueden descubrir en un punto final fijo llamado $ metadata. Nuevamente, el cliente necesita saber esto de antemano, no se puede descubrir.

Desafortunadamente, Microsoft no consideró adecuado crear tipos de medios para describir estos datos clave, por lo que cualquier cliente de OData tiene que hacer un montón de suposiciones sobre el servicio con el que está hablando y los datos que está recibiendo.

Darrel Miller
fuente
1
@felickz Lo siento por eso. Estaba teniendo problemas de DNS. Debería estar funcionando ahora. O será cuando expire su caché dns.
Darrel Miller
66
En realidad esto está desactualizado. V3 de OData ha agregado 'JSON Light' que aborda estas dos preocupaciones (que en realidad son solo una), es decir, $ metadata es cómo sabe cómo crear consultas, por lo que todo lo que faltaba es un enlace a $ metadata en representaciones de recursos. Eso se ha agregado, por lo que ambos problemas desaparecen de una vez.
Alex James
10
@DarrelMiller Usted mencionó que su respuesta ahora está desactualizada. ¿Le gustaría agregar una actualización con su opinión sobre el tema? Todavía estaría interesado en saber la diferencia entre OData 4 y REST. Muchas gracias
Kurren
2
@Kurren Está en mi lista de tareas pendientes, pero desafortunadamente es una lista larga.
Darrel Miller
2
@DarrelMiller Espero que encuentres algún tiempo para actualizar la publicación pronto para actualizarla con OData V4.
LCJ
64

El protocolo OData se basa en el protocolo AtomPub. El protocolo AtomPub es uno de los mejores ejemplos de diseño de API REST. Entonces, en cierto sentido tiene razón: OData es solo otra API REST y cada implementación de OData es un servicio web REST-ful.

La diferencia es que OData es un protocolo específico; REST es estilo de arquitectura y patrón de diseño.

Franci Penov
fuente
Podría estar equivocado en esto (recién comencé a aprender sobre odata), pero a partir de la versión 3 del [protocolo] [ odata.org/documentation] parece que también hay un formato JSON especificado, que puede usar alternativamente. ¿Puedes arrojar algo de luz sobre esto?
Johannes Rudolph
1
@JohannesRudolph, sinceramente, no tengo idea. No he visto OData en los últimos dos años. Pero es muy probable que Microsoft haya agregado soporte JSON. Sin embargo, tenga en cuenta que esto no cambia en modo alguno ninguna de las respuestas aquí. JSON vs XML es solo una cuestión de presentación de los recursos REST.
Franci Penov
1
Puede especificar en la solicitud qué formato le gustaría tener. XML y JSON deben ser compatibles con la mayoría de las implementaciones, por ejemplo, configurando el encabezado Aceptar en application / json (a partir de OData versión 2)
i000174
32

REST es una técnica de diseño genérico utilizada para describir cómo se puede acceder a un servicio web. Usando REST puede hacer solicitudes http para obtener datos. Si lo prueba en su navegador, sería como ir a un sitio web, excepto que en lugar de devolver una página web, obtendría XML. Algunos servicios también devolverán datos en formato JSON, que es más fácil de usar con Javascript.

OData es una tecnología específica que expone datos a través de REST.

Si desea resumirlo muy rápido, piense en ello como:

  • REST - patrón de diseño
  • OData - tecnología habilitadora
Rush Frisby
fuente
20

En 2012, OData se sometió a estandarización, así que solo agregaré una actualización aquí ...

Primero las definiciones:

DESCANSO : es una arquitectura de cómo enviar mensajes a través de HTTP.

OData V4 : es una implementación específica de REST, realmente define el contenido de los mensajes en diferentes formatos (actualmente creo que es AtomPub y JSON). ODataV4 sigue los principios de descanso.

Por ejemplo, la gente de asp.net usará principalmente el controlador WebApi para serializar / deserializar objetos en JSON y hacer que JavaScript haga algo con él. El objetivo de Odata es poder realizar consultas directamente desde la URL con opciones listas para usar.

tatigo
fuente
10

De la documentación de OData :

El protocolo OData es un protocolo de nivel de aplicación para interactuar con datos a través de servicios web RESTful.

...

El Protocolo OData es diferente de otros enfoques de servicios web basados ​​en REST en que proporciona una manera uniforme de describir tanto los datos como el modelo de datos.

mcanti
fuente
4

OData (Open Data Protocol) es un estándar OASIS que define la mejor práctica para construir y consumir API RESTful. OData lo ayuda a concentrarse en la lógica de su negocio mientras crea API RESTful sin tener que preocuparse por los enfoques para definir encabezados de solicitud y respuesta, códigos de estado, métodos HTTP, convenciones de URL, tipos de medios, formatos de carga útil y opciones de consulta, etc. OData también lo guía sobre seguimiento de cambios, definición de funciones / acciones para procedimientos reutilizables y envío de solicitudes asincrónicas / por lotes, etc. Además, OData proporciona la facilidad de extensión para satisfacer cualquier necesidad personalizada de sus API RESTful.

Las API RESTful de OData son fáciles de consumir. Los metadatos de OData, una descripción legible por máquina del modelo de datos de las API, permite la creación de potentes proxies y herramientas de clientes genéricos. Algunos de ellos pueden ayudarlo a interactuar con OData incluso sin saber nada sobre el protocolo. Los siguientes 6 pasos demuestran 6 escenarios interesantes de consumo de OData en diferentes plataformas de programación. Pero si no es desarrollador y desea simplemente jugar con OData, XOData es el mejor comienzo para usted.

para más detalles en http://www.odata.org/

RajeshVerma
fuente
4

ODATA es un tipo especial de REST donde podemos consultar datos de manera uniforme desde la URL.

Minh Nguyen
fuente
2

REST significa RE presentational S tate T ransfer, que es un estilo arquitectónico basado en recursos. Basado en recursos significa que los datos y las funcionalidades se consideran recursos.

OData es un protocolo basado en web que define un conjunto de mejores prácticas para construir y consumir servicios web RESTful. OData es una forma de crear servicios web RESTful, por lo tanto, una implementación de REST.

Ishara
fuente