¿Cuál es la diferencia entre REST y RESTful?

¿Cuál es la diferencia entre un sistema REST y un sistema que es RESTful?

De algunas cosas que he leído, los llamados servicios REST son en realidad servicios RESTful. Entonces, ¿cuál es la diferencia entre los dos?

La transferencia de estado representacional (REST) es un estilo de architecture de software. Como se describe en una disertación de Roy Fielding, REST es un “estilo arquitectónico” que básicamente explota la tecnología existente y los protocolos de la Web.

RESTful se usa generalmente para referirse a los servicios web que implementan dicha architecture.

“RESTO” es un paradigma arquitectónico. “RESTful” describe el uso de ese paradigma.

Servicios / Arquitectura basados ​​en REST VC RESTFUL Services / Architecture

Para diferenciar o comparar estos 2, debes saber qué es REST .

REST ( RE Presentational S tate T ransfer) es básicamente un estilo arquitectónico de desarrollo que tiene algunos principios …

  • Debe ser apátrida

  • Debe acceder a todos los recursos del servidor usando solo URI

  • No tiene encriptación incorporada

  • No tiene sesión

  • Utiliza un solo protocolo que es HTTP

  • Para realizar operaciones CRUD, debe usar verbos HTTP como get, post, put y delete

  • Debería devolver el resultado solo en forma de JSON o XML, átomo, OData, etc. (datos ligeros)

REST based services siguen algunos de los principios anteriores y no todos

RESTFUL services significa que sigue todos los principios anteriores.

Es similar al concepto de:

Object-based languages compatibles con todos los conceptos de OOP, ejemplos : C ++, C #

Object oriented languages admiten algunas de las características de OOP, ejemplos : JavaScript, VB


Ejemplo :

ASP Dot NET MVC 4 está REST-Based mientras que Microsoft WEB API es RESTFul .

MVC solo admite algunos de los principios REST anteriores, mientras que API WEB admite todos los principios REST anteriores.

MVC solo admite lo siguiente de la API REST

  • Podemos acceder al recurso usando URI

  • Admite el verbo HTTP para acceder al recurso desde el servidor

  • Puede devolver los resultados en forma de JSON, XML, que es la HTTPResponse.

Sin embargo, al mismo tiempo en MVC

  • Podemos usar la sesión

  • Podemos hacerlo con estado

  • Podemos devolver el video o la imagen del método de acción del controlador que básicamente viola los principios de REST

Es por eso que MVC está REST-Based mientras que WEB API soporta todos los principios anteriores y es RESTFul .

Como dijo Jason en los comentarios, RESTful se usa solo como un adjetivo que describe algo que respeta las restricciones de REST.

REST significa transferencia de estado representativo. Eso significa que el estado en sí mismo no se transfiere sino que es una mera representación de él. El ejemplo más común es una aplicación basada en servidor HTML puro (sin javascript). El navegador no sabe nada sobre la aplicación en sí, pero a través de enlaces y recursos, el servidor puede transferir el estado de la aplicación al navegador. Donde un botón normalmente cambia una variable de estado (por ejemplo, una página abierta) en una aplicación de Windows normal, en el navegador tiene un enlace que representa dicho cambio de estado.

La idea es usar hipermedia. Y tal vez para crear nuevos tipos de hipermedia. Potencialmente, podemos expandir el navegador con javascript / AJAX y crear nuevos tipos de hipermedia personalizados. Y tendríamos una verdadera aplicación REST.

Esta es mi versión corta de lo que REST representa, el problema es que es difícil de implementar. Personalmente, digo RESTful, cuando quiero hacer referencia a los principios de REST, pero sé que realmente no estoy implementando todo el concepto de REST. Realmente no decimos SOAPful, porque usas SOAP o no. Creo que la mayoría de las personas no hacen REST como lo concibió su creador Roy Fielding, sino que implementamos architectures RESTful o REST. Puedes ver su disertación , y encontrarás el acrónimo REST pero no la palabra RESTful.

REST es un estilo de architecture de software para software distribuido

Ajustarse a las restricciones REST se denomina ‘RESTful’.

Muy usado hoy para construir servicios web como alternativa al SOAP.

Aquí tienes algunos enlaces para verificar

http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.computerworld.com/s/article/297424/Representational_State_Transfer_REST_
http://www.ibm.com/developerworks/webservices/library/ws-restful/

gracias por las respuestas Lea este artículo de Alex Rodríguez, que sugiere que un servicio web RESTful tiene 4 características básicas que son:

  1. Use los métodos HTTP explícitamente.
  2. Ser apátrida
  3. Exponer URIs similares a la estructura de directorios.
  4. Transferir XML, notación de objetos JavaScript (JSON), o ambos.

Representational State Transfer (REST) ​​es un estilo de architecture de software para sistemas hipermedia distribuidos como la World Wide Web. El término Representational State Transfer fue introducido y definido en 2000 por Roy Fielding 1 [2] en su disertación doctoral. Fielding es uno de los autores principales de las especificaciones de protocolo de transferencia de hipertexto (HTTP) 1.0 y 1.1. Ajustarse a las restricciones REST se denomina ‘RESTful’. Fuente: Wikipedia

Los servicios web son esencialmente sitios web cuyo contenido es consumido por progtwigs de computadora, no personas. REST es un conjunto de principios arquitectónicos que estipula que los servicios web deben aprovechar al máximo HTTP y otros estándares web, de modo que los progtwigs obtengan todo lo bueno que la gente ya puede obtener de la web. REST a menudo se contrasta con los servicios web SOAP y otros servicios web orientados a llamadas a procedimientos remotos.

Las presentaciones de Stefan Tilkov sobre REST en Parleys.com son bastante buenas, especialmente esta .

Para un libro, no puede obtener nada mejor que Restful Web Services de Richardson y Ruby.

Un servicio basado en REST se denomina “Servicio RESTful”.

Fuente Confío en publicar eso: Dr.Dobbs Archive

Hay 4 niveles de API definidos en el Modelo de madurez de Richardson. Estos se definen como:

  • nivel 0: cualquier sistema que tenga un punto final único para todas sus API (SOAP o RPC entran en esta categoría). Las apis de nivel 0 también pueden parecerse a “comandos”.

  • nivel 1: un sistema descrito por ResourceUri. Este es un sistema que define múltiples URI basadas en entidades (en lugar de tener un solo punto final como lo haría un sistema de nivel 0). Estos URI pueden usar diferentes acciones http (POST, GET, PUT, etc.) para implementar diferentes acciones contra ese recurso.

  • nivel 2: también conocido como nivel 1 con un uso compatible de métodos / verbos HTTP estándar y respuestas de código de estado múltiple

  • nivel 3: también conocido como nivel 2 más HATEOAS (hipermedio incluido en la respuesta que describe las llamadas adicionales que puede realizar)

Mientras que los niveles 1, 2 y 3 se pueden considerar como sistemas REST, solo los niveles más estrictos (también conocido como nivel 2 y nivel 3) se consideran RESTful.

Así que, esencialmente, todas las aptas RESTful son APIS REST, pero no todas las APIS REST son RESTful

definición del modelo de madurez Richardson

Un “servicio REST” y un “servicio RESTful” son uno y lo mismo.

Un sistema RESTful es cualquier sistema que sigue las convenciones REST tal como se define en el documento original que creó la idea de las aplicaciones RESTful en red .

Vale la pena señalar que hay diferentes niveles de RESTfulness. En general, REST es un estilo, no un estándar, por lo que hay espacio para la interpretación en función de las necesidades. Un ejemplo son las URL de recursos jerárquicos (por ejemplo /things/ID/relatedthings ) frente a las URL planas (por ejemplo /things/ID y /relatedthings?thing=ID /things/ID /relatedthings?thing=ID )