2011-12-13 30 views
8

He intentado leer acerca de qué servicios web RESTful de Wikipedia, etc., pero debo admitir que no lo entiendo. Hay una película en la que Denzell Washington dice "explícame como si tuviera 5 años". ¿Alguien puede hacer eso por mí con respecto a los servicios RESTful?Qué son los servicios web RESTful

Puntos de bonificación si conoce el nombre de la película.

+1

[Acabo de actualizar este día de hoy] (http://stackoverflow.com/questions/4573305/rest-api-why-use-put -delete-post-get/4573426 # 4573426). – zzzzBov

+1

Además, [Filadelfia] (http://en.wikiquote.org/wiki/Philadelphia_ (película)), pero parece que has citado incorrectamente. – zzzzBov

+0

no hay mucha edad de cuatro años en esa publicación. En esencia, ¿qué es y cómo difiere de SOAP? Un simple ejemplo sería genial. –

Respuesta

20

Cuando comencé con REST, también tuve algunas dificultades para obtener la "visión general", a pesar de toda la documentación disponible. De todas formas, aquí está mi breve asumir RESTO:

  • REST es un estilo arquitectónico para la construcción de servicios web.

  • REST se basa en HTTP. Su servicio web expone recursos en forma de URI. Su servicio le permite a los clientes actuar sobre su servicio utilizando los verbos HTTP estándar (GET = leer el recurso, POST = crear el recurso, PUT = actualizar el recurso, DELETE = eliminar el recurso).

  • REST ha ganado un impulso significativo en los últimos años debido en gran parte a (a) Su simplicidad con respecto a otros estilos como SOAP. (b) La ubicuidad de HTTP. Debido a que HTTP es un estándar probado en el tiempo, la mayoría de los lenguajes tienen soporte HTTP incorporado o de terceros. No puedes decir lo mismo sobre SOAP.

  • Como REST es un estilo y no un protocolo/especificación estricta, hay mucho espacio para la interpretación. Muchos servicios públicos que se autodenominan "REST" no siguen el estilo al pie de la letra.

+2

Esta respuesta omite una parte muy importante de la arquitectura REST, llamada [HATEOAS] (http://en.wikipedia.org/wiki/HATEOAS). Esto permite [acoplamiento libre] (http://en.wikipedia.org/wiki/Loose_coupling), y permite que el servidor cambie/"evolucione" independientemente de los clientes. Eso es mucho más de lo que puede decir sobre los servicios SOAP, y es parte de por qué la web en sí fue exitosa. REST es, de hecho, un intento de formalizar la arquitectura generalizada de la web que ya hemos estado utilizando, y el hipertexto/hipervínculo es sin duda la parte más importante de la web, y por lo tanto REST. –

4

RESTful services son servicios que transfieren estado represntationally, de ahí el nombre de Transferencia de estado representacional. Lo que realmente significa significa que los datos se pasan de manera declarativa, es decir, se obtiene lo que se solicita.

REST es diferente de SOAP en que no es un protocolo, y no hay una especificación formal. SOAP se creó para simplificar la transferencia de datos entre aplicaciones mediante el uso de una interfaz común para acceder a la funcionalidad de forma remota. Desafortunadamente, para trabajar en general, SOAP es bastante complicado, y hacer solicitudes SOAP no es muy sencillo, ya que requiere análisis y generación de XML.

En su lugar, REST se basa en el protocolo de transferencia de hipertexto (HTTP) para hacer el trabajo pesado. Los servidores web y los scripts de servidor ya están construidos alrededor de trabajar dentro de HTTP. Hacer una solicitud utilizando REST es tan simple como una solicitud de URL, como visitar una página web. La API para un servicio RESTful puede reutilizar cualquiera de HTTP's methods y status codes para señalar cualquier error. En lugar de acceder a los datos que se almacenan en una base de datos a través de consultas sofisticadas y códigos especiales, los servicios RESTful permiten un acceso que es más similar al sistema de archivos estándar.

La parte clave de los servicios RESTful es la declarativa. Es probable que una solicitud al GET /widgets/109340 le proporcione los datos del widget con una identificación de 109340. Digo "probable" porque no hay garantía. Depende del implementador. El punto es que puedes echar un vistazo a la solicitud REST y saber qué esperas que se devuelva. Con SOAP, es mucho más difícil saber si tiene un error de sintaxis.

Si no existe /widgets/109340, en lugar de pasar de vuelta el cuerpo del mensaje, con algún valor específico para afirmar que existe el contenido, el servidor puede devolver un código de 404 Not Found, y el usuario sabrá que el ID particular no lo hace existe.Si se devuelve 403, el usuario sabrá que el artículo existe, pero que no tiene permisos para acceder a él. Estos códigos de respuesta de solicitud ya son compatibles con los programas que realizan solicitudes de URL porque son comunes a todos los servidores. Esto hace que las solicitudes REST sean mucho más flexibles.

REST también es flexible en el formato de salida, /widgets/109340 podría devolver un objeto JSON, pero no hay razón por la que no pueda devolver datos binarios, HTML, XML, SVG, video o cualquier otro formato de datos. Un CDN podría usar una API REST para servir contenido versionado que puede o no almacenarse en el sistema de archivos: GET /jQuery/1.0.0, GET /jQuery/1.7.1 y GET /jQuery/latest son todas solicitudes RESTful.

Voy a asumir que usted entiende lo que es Simple Object Access Protocol (SOAP)

+0

La transferencia de estado y una interfaz declarativa no son lo mismo en absoluto. La transferencia de estado está hipervinculando en representaciones de recursos devueltas al cliente, y no se almacena ningún estado de aplicación del lado del servidor entre las llamadas. Esto permite muchos niveles de desacoplamiento entre el servidor, el cliente y la aplicación, y de este modo abre un mundo de escalabilidad. Una interfaz declarativa puede ser un requisito previo para habilitar la transferencia de estado, pero eso no significa que sean lo mismo. –

+0

@ MerlynMorgan-Graham, por supuesto, responda la pregunta si tiene una mejor respuesta. – zzzzBov

+0

Solo estoy tratando de ayudar. No tuve la intención de ofender, así que me disculpo si tengo :) ¡Tomaré su sugerencia, aunque! –

Cuestiones relacionadas