En términos más simples que el artículo de Wikipedia, ¿qué es REST / RESTful?

REST, transferencia de estado representacional, es un diseño de arquitectura creado por Roy Fielding, quien también co-diseñó el estándar HTTP. Define algunos conceptos específicos:
– el servidor del cliente, el servidor y el cliente no dependen el uno del otro
– sin estado, cada solicitud contiene toda la información necesaria para devolver una respuesta, como si está conectado
– almacenable en caché, los datos pueden almacenarse, lo que reduce la necesidad de solicitudes de servidor redundantes
– en capas, el cliente y el servidor pueden estar separados por un proxy, caché, etc.
– código bajo demanda, el servidor puede actualizar al cliente con una nueva funcionalidad
– interfaz uniforme, las URL de punto final están estandarizadas, no especializadas para AJAX, XML ni HTML

Transferencia de estado representacional

Lo que es notable es que ninguna de las API web más populares usa REST completo, son algo RESTful. Muchos desarrolladores confunden REST con ser URL legibles para humanos, por ejemplo: / blog / 2014/01/01 / Luego está el surgimiento de MVC, lo que lleva a muchos desarrolladores a crear diferentes URL para AJAX, ex / blog / 2014/01/01 / json y diferentes URL para versiones, por ejemplo: / v2 / blog / 2014/01/01 / xml Ninguno de estos es verdadero REST. Eso es lo básico, ahora cubriré los detalles de por qué cada uno es útil.

Cliente-servidor , esto permite una separación de preocupaciones, de modo que el servidor web no confía en que su navegador específico tenga una función, y su navegador no confía en el servidor web que utiliza una tecnología específica.

Sin estado , significa que el servidor web no necesita recordar los detalles de su navegador web o aplicación móvil. La solicitud de la página web que envíe, por ejemplo, incluirá un encabezado de cookie de sesión http, que le indicará al servidor que ha iniciado sesión. Esto significa que cada solicitud es autónoma y no se basa en un orden o secuencia específica.

Cachéable , le permite a usted o cualquier otro servidor almacenar en caché las solicitudes. Por ejemplo, si tiene una aplicación de correo electrónico que solicita una lista de todos sus contactos, esa es una cantidad moderada de datos que no cambiará con frecuencia, por lo que debe almacenarse en caché. En lugar de que el servidor consulte una base de datos, analice el contenido, lo formatee y lo devuelva, el resultado final se puede almacenar en caché en otro servidor o en su aplicación móvil, lo que simplifica enormemente la solicitud y la hace mucho más rápida.

En capas , es un buen efecto de implementar los conceptos mencionados anteriormente, permitiendo que la plataforma general se pueda construir y expandir fácilmente con herramientas como el almacenamiento en caché, la seguridad, etc.

Code on demand , es un concepto muy nuevo, permite expandir dinámicamente lo que puede hacer un sistema web. Las nuevas bibliotecas mvvc javascript del lado del cliente, como AngularJS, permiten esto. Básicamente, el sitio web es una página web singular, con JavaScript cargando y descargando contenido dinámicamente. Esto significa que hay una URL para una plantilla de publicación genérica, por ejemplo: / blog / post / y luego hay una URL AJAX JSON, por ejemplo: / blog / post / 2014/01/01 El javascript del lado del cliente tomará el JSON y renderice la plantilla genérica, todo en su navegador, en lugar de hacerlo en el servidor. Lo bueno de esto es que puedo mantener el contenido del blog AJAX JSON igual, pero cambiar la plantilla en el futuro.

Interfaz uniforme , significa usar una única URL para todas y cada una de las llamadas a una entrada de datos específica, como una sola publicación de blog. Una URL verdaderamente tranquila permite devolver html, json, xml, yaml u otro, definido por los encabezados de solicitud http que envía su navegador o aplicación móvil. He implementado esto en algunos sistemas ahora. Permite que un sitio web use la misma URL que una aplicación móvil. El sitio web javascript llamará / blog / post / 2014/01/01 y obtendrá html, mientras que una aplicación móvil también llamará / blog / post / 2014/01/01 y volverá a json. Dentro de la respuesta, el servidor también puede definir enlaces entre entradas de datos, como cuáles son las publicaciones de blog siguientes y anteriores, y varias plantillas. Esto lleva a HATEOAS.

REST es el estándar a seguir y es lo que casi todos los sistemas web usarán en los próximos años. En realidad, es mucho más fácil seguirlo y obtener resultados sorprendentes, en lugar de hacer atajos pirateados, ya que REST se basa en HTTP.

Campo de golf:
Modelo de madurez de Richardson
HATEOAS: una discusión de seguimiento sobre el descanso
Lleva tu API REST al siguiente nivel con HATEOAS
Los enemigos odiarán a HATEOAS
Esta semana en REST

REST es una filosofía que utiliza HTTP para exponer recursos que pueden manipularse utilizando verbos / métodos HTTP existentes.

La idea es que tiene recursos expuestos en el servidor que posteriormente pueden manipularse utilizando verbos HTTP existentes de forma sin estado. . Esto es bastante diferente de la invocación de método remoto de estilo RPC.

Además, REST define el principio HATEOAS ( Hypermedia como el motor del estado de la aplicación ), que alienta a los desarrolladores de REST a relacionar sus servicios mediante hipermedia, muy similar a los enlaces actuales en Internet. Esto puede ser difícil de implementar en la práctica, pero es un concepto muy poderoso. Su API REST se convierte esencialmente en una especie de flujo de trabajo donde un usuario / llamante sabe por la respuesta qué hacer a continuación.

Como dije, REST es una filosofía propuesta a través de la investigación de Roy Fielding y no tiene ningún documento similar a JSR. Diferentes personas lo implementan de manera diferente según los casos de uso pragmáticos. La API REST que admite los principios sugeridos según el documento de Fielding a menudo se denomina RESTful.

Lo mantendré simple.

Para comprender REST, debe comprender cómo funciona una API web.

En general, en un servicio web, las solicitudes de datos se envían desde los navegadores web a Internet. A cambio, Internet conecta y transfiere la solicitud a la API que se conecta al servidor o la base de datos para encontrar la respuesta adecuada para la solicitud. API devuelve la solicitud a Internet y al servidor web. Ver la siguiente imagen.

REST es un estilo arquitectónico API que facilita la comunicación entre el servidor y el cliente. Se utiliza en el desarrollo de servicios web. Hace que el proceso de conexión del servidor y el cliente sea bastante fácil.

Las API REST son livianas en comparación con otras API como SOAP, pero son menos flexibles en comparación con GraphQL. La arquitectura desacoplada de las API REST las hace perfectas para aplicaciones basadas en la nube proporcionadas por compañías como Google, Microsoft y Amazon.

Los servicios web que usan REST se llaman API Restful.

Si desea obtener más información sobre REST, consulte mi publicación de blog que detalla REST y sus características.

En palabras de Roy Fielding: el estilo arquitectónico REST enfatiza en una interfaz uniforme entre los componentes. REST está definido por cuatro restricciones de interfaz: identificación de recursos; manipulación de recursos a través de representaciones ; mensajes autodescriptivos; e hipermedia como motor del estado de la aplicación.

En términos simples, REST es lo mismo que una solicitud web, excepto que en lugar de contener un documento (como lo hace una página web normal) la solicitud es leída por una aplicación y contiene datos sin procesar para la aplicación.

Realmente es poco más que usar las características ya presentes en HTTP y mecanismos de URL estándar, en lugar de pegar cosas encima, como lo hace SOAP. No tiene estado, pero eso es realmente solo una idea de HTTP básico.

Básicamente, HTTP ya tiene PUT y DELETE, pero no se usaron mucho en comparación con GET y POST. La idea es usarlos en lugar de hacer otra cosa.

Otro enlace interesante habla sobre RESTFul API – Cómo le expliqué REST a mi esposa | Looah Acabo de leer desde la perspectiva de los conceptos. Sin ofender por el género aquí.

La web no tiene estado (es decir, no tiene memoria de una solicitud a otra) … una gran cantidad de datos que necesitan viajar a través de la web es de hecho con estado (como la sesión del usuario) … las aplicaciones no RESTful codifican sus estados en sus solicitudes y respuestas … . REST es un estilo de enviar solicitudes que no requieren estado …

Dice que HTTP fue diseñado como CRUD, por lo que debemos tratarlo adecuadamente como CRUD.
http://en.wikipedia.org/wiki/Cre

Esta. Análisis de software amigable con la nube: RESTful