¿Qué es REST? Ligeramente confundido

Estaba bajo el supuesto de que REST era un servicio web, pero parece que estoy equivocado al pensar esto, entonces, ¿qué es REST?

He leído la Wikipedia pero todavía no puedo entenderlo. ¿Por qué hacer muchos lugares se refieren a las API como API REST?

REST no es un servicio web específico, sino un concepto de diseño (architecture) para gestionar la información del estado. El documento seminal sobre esto fue la disertación de Roy Thomas Fielding (2000), “Estilos arquitectónicos y el diseño de architectures de software basadas en red” ( disponible en línea en la Universidad de California, Irvine).

Primero lea la publicación de Ryan Tomayko Cómo le expliqué RESTO a mi esposa ; es un gran punto de partida. Luego lea la disertación real de Fielding. ¡No es tan avanzado, ni es largo (seis capítulos, 180 páginas)! (Sé que a ustedes los niños en la escuela les gusta).

EDIT: Siento que no tiene sentido tratar de explicar REST. Tiene tantos conceptos como escalabilidad, visibilidad (sin estado), etc. que el lector debe comprender, y la mejor fuente para entenderlos es la disertación real. Es mucho más que POST / GET, etc.

REST es un patrón de diseño de software usado típicamente para aplicaciones web. En términos simples, esto significa que es una idea utilizada comúnmente en muchos proyectos diferentes. Representa la transferencia de estado representacional . La idea básica de REST es tratar los objetos en el lado del servidor (como en las filas de una tabla de base de datos) como recursos que pueden crearse o destruirse.

La forma más básica de pensar sobre REST es como una forma de formatear las URL de sus aplicaciones web. Por ejemplo, si su recurso se llamó “publicaciones”, entonces:

/posts Sería cómo un usuario accedería a TODAS las publicaciones para mostrarlas.

/posts/:id Sería cómo un usuario accedería y vería una publicación individual, recuperada en función de su id. única.

/posts/new Sería cómo mostrarías un formulario para crear una nueva publicación.

Enviar una solicitud POST a /users sería cómo crearías una nueva publicación en el nivel de la base de datos.

Enviar una solicitud PUT a /users/:id sería cómo actualizaría los atributos de una publicación determinada, identificada de nuevo con una identificación única.

Enviar una solicitud DELETE a /users/:id sería la forma en que eliminaría una publicación determinada, nuevamente identificada por una identificación única.

Según tengo entendido, el patrón REST se popularizó principalmente (para aplicaciones web) mediante el marco Ruby on Rails, que pone un gran énfasis en las rutas RESTful. Sin embargo, podría estar equivocado acerca de eso.

Puede que no sea el más calificado para hablar de ello, pero así es como lo he aprendido (específicamente para el desarrollo de Rails).

Cuando alguien se refiere a una “API de REST”, generalmente lo que quieren decir es una API que usa URLs RESTful para recuperar datos.

REST es un estilo arquitectónico y un diseño para architectures de software basadas en red.

REST conceptos de REST se conocen como recursos. Una representación de un recurso debe ser apátrida. Se representa a través de algún tipo de medio. Algunos ejemplos de tipos de medios incluyen XML , JSON y RDF . Los recursos son manipulados por los componentes. Los componentes solicitan y manipulan recursos a través de una interfaz estándar uniforme. En el caso de HTTP, esta interfaz consiste en operaciones HTTP estándar, por ejemplo, GET , PUT , POST , DELETE .

REST generalmente se usa a través de HTTP , principalmente debido a la simplicidad de HTTP y su asignación muy natural a los principios RESTful. Sin embargo, REST no está vinculado a ningún protocolo específico.

Principios fundamentales de REST

Comunicación cliente-servidor

Las architectures cliente-servidor tienen una separación muy clara de preocupaciones. Todas las aplicaciones creadas en el estilo RESTful también deben ser cliente-servidor en principio.

Apátrida

Cada solicitud del cliente al servidor requiere que su estado esté completamente representado. El servidor debe ser capaz de comprender completamente la solicitud del cliente sin utilizar ningún contexto de servidor o estado de sesión del servidor. Se deduce que todo estado debe mantenerse en el cliente. Discutiremos la representación apátrida en más detalle más adelante.

Cacheable

Se pueden usar restricciones de caché, lo que permite que los datos de respuesta se marquen como caché o no de caché. Cualquier información marcada como almacenable en caché puede reutilizarse como respuesta a la misma solicitud posterior.

Interfaz uniforme

Todos los componentes deben interactuar a través de una única interfaz uniforme. Debido a que la interacción de todos los componentes se produce a través de esta interfaz, la interacción con diferentes servicios es muy simple. La interfaz es la misma! Esto también significa que los cambios de implementación pueden realizarse de forma aislada. Tales cambios no afectarán la interacción de los componentes fundamentales porque la interfaz uniforme siempre se mantiene. Una desventaja es que estás atascado con la interfaz. Si se puede proporcionar una optimización a un servicio específico cambiando la interfaz, no tiene suerte ya que REST lo prohíbe. Sin embargo, el lado positivo es que REST está optimizado para la Web, ¡y por lo tanto, la popularidad de REST sobre HTTP es increíble!

Los conceptos anteriores representan características definitorias de REST y diferencian la architecture REST de otras architectures como los servicios web. Es útil tener en cuenta que un servicio REST es un servicio web, pero un servicio web no es necesariamente un servicio REST.

Vea esta publicación en el blog sobre los Directores de diseño de REST para obtener más detalles sobre REST y los principios anteriores.

Significa Representational State Transfer y puede significar muchas cosas, pero generalmente cuando se habla de API y aplicaciones, se habla de REST como una forma de hacer servicios web u obtener progtwigs para hablar en la web.

REST es básicamente una forma de comunicarse entre sistemas y hace gran parte de lo que SOAP RPC fue diseñado para hacer, pero mientras que SOAP generalmente hace una conexión, autentica y luego hace cosas sobre esa conexión, REST funciona de forma muy similar a como funciona la web . Usted tiene una URL y cuando solicita esa URL obtiene algo a cambio. Aquí es donde las cosas empiezan a ser confusas porque la gente describe la web como la aplicación REST más grande y, si bien es técnicamente correcta, no ayuda a explicar de qué se trata.

En pocas palabras, REST le permite obtener dos aplicaciones hablando por Internet usando herramientas que son similares a las que usa un navegador web. Esto es mucho más simple que SOAP y mucho de lo que hace REST dice: “Oye, las cosas no tienen por qué ser tan complejas”.

Vale la pena leer:

  • Cómo expliqué DESCANSO a mi esposa (ahora disponible aquí)
  • Estilos arquitectónicos y el diseño de architectures de software basadas en red

http://en.wikipedia.org/wiki/Representational_State_Transfer

La idea básica es que, en lugar de tener una conexión continua con el servidor, realice una solicitud, obtenga algunos datos, los muestre a un usuario, pero tal vez no todos, y luego cuando el usuario haga algo que requiera más datos, o para pasar algo al servidor, el cliente inicia un cambio a un nuevo estado.