Qué es REST (en inglés simple) [cerrado]

84

Últimamente me he interesado en familiarizarme con REST. Traté de leer la entrada wiki en REST , pero no fue de ayuda. Realmente agradecería que alguien pueda explicar en inglés simple (sin jerga tecnológica innecesaria )

  1. ¿Qué es REST?
  2. Qué posición ocupa en el ecosistema de arquitectura web
  3. Con qué fuerza (o sin apretar) se combina con el protocolo.
  4. ¿Cuáles son las alternativas a REST y cómo REST se compara con ellas?

Entiendo que puede que no sea posible responder esto en uno o dos párrafos, en ese caso los enlaces relevantes serán muy apreciados.

Gaurav
fuente
66
Prueba esto: tomayko.com/writings/rest-to-my-wife
talonx
Creo que esto es informativo, pero no demasiado detallado: ibm.com/developerworks/webservices/library/ws-restful
NoChance
Me pregunto si estas preguntas pueden considerarse respondidas.
Gary Rowe
@GaryRowe Había marcado una respuesta, supongo que fue eliminada por alguna razón. No entiendo este sitio.
Gaurav
1
Ninguna de las respuestas a continuación usa la palabra "idempotente". Debería buscarlo: la idempotencia es un aspecto importante de cualquier arquitectura RESTful.
Solomon Slow

Respuestas:

10

Qué es REST (en inglés simple)

Inglés simple:

REpresentacional: la acción de hablar o actuar en nombre de alguien.
Transferencia de estado: estado de transferencia.


Técnico:

  • no transferimos un objeto real sino una representación del mismo en una forma (por ejemplo, un xml / json / text para representar una tabla de base de datos).
  • REST para exponer una API pública a través de Internet para manejar operaciones CRUD en datos. REST se centra en acceder a recursos nombrados a través de una única interfaz coherente.
  • REST se representa a través de algún tipo de medio. Algunos ejemplos de tipos de medios incluyen XML, JSON y RDF.
  • REST es un estilo arquitectónico para la arquitectura orientada a recursos (ROA) , no una especificación o un estándar.
  • El estilo arquitectónico significa que es un concepto, una teoría (y cómo se implementa, depende de usted)
  • Todo se identifica por un punto final único. es decir, hay un punto final para cada recurso (datos).
  • El punto final consiste en un nombre de dominio con dirección de recurso.

RESTO vs JABÓN

Premraj
fuente
43

¿Qué es REST?

Transferencia de estado representacional. Describe cómo un sistema puede comunicar el estado con otro. Un ejemplo sería el estado de un producto (su nombre, descripción, etc.) representado como XML, JSON o texto sin formato. La idea generalizada de estado se denomina recurso.

¿Qué posición ocupa en un ecosistema de arquitectura web?

REST se asocia comúnmente con la interfaz de servicios web, ya que HTTP es, con mucho, el protocolo de operador más común. En el modelo de 7 capas, existe en la capa de aplicación . Sin embargo, vea la siguiente sección.

¿Con qué fuerza (o sin apretar) se combina con el protocolo?

REST no es HTTP. Utiliza HTTP porque en su forma más general REST existe para ayudar a una máquina a mapear el concepto de un verbo contra una colección arbitraria de sustantivos. HTTP contiene un conjunto útil de verbos genéricos (GET, PUT, PATCH, etc.) que pueden aplicarse a sustantivos arbitrarios expresados ​​como URI utilizando HTTP, por ejemplo, GET http://example.org/Product(54 ).

¿Cuáles son las alternativas a REST y cómo se compara REST con ellas?

Esto es similar a preguntar "¿Qué tan RESTANTE es mi enfoque?" Use la siguiente lista (resumida del Modelo de madurez de Richardson como lo describe Martin Fowler ):

Nivel 0 - El pantano de POX

Use POST para todo (lecturas, escrituras, eliminaciones). Esto es SOAP, POX, RPI, etc. Simplemente está utilizando HTTP como túnel para su propio protocolo. Se dirige a un único punto final que hace todo en función del contenido del cuerpo de la solicitud.

Nivel 1 - Recursos

Use POST para todo. Apunte a múltiples puntos finales diseñados para brindar información sobre una cosa en particular. Acabas de descubrir recursos.

Nivel 2 - verbos HTTP

Use verbos HTTP contra recursos. Ahora lo estás consiguiendo. POST es crear, PUT es sobrescribir, OPCIONES para las operaciones disponibles, BORRAR para, bueno, eliminar el recurso. Como resultado del uso de estos verbos, los diferentes códigos de estado HTTP comienzan a ser más relevantes (¿ACEPTARON a alguien?).

Nivel 3 - Control de hipermedia ( HATEOAS )

En este punto, da el salto final e introduce hipermedia como mecanismo de control de flujo. Un cliente REST no necesita conocimiento previo sobre cómo interactuar con una aplicación o servidor en particular más allá de una comprensión genérica de hipermedia. Esto se puede comunicar en HTTP a través del campo de encabezado Content-Type. Los formatos de texto incluyen AtomPub y (más conciso) HAL , mientras que HyperAudio funciona bien para transmisiones de audio (consulte SoundCloud et al)

Gary Rowe
fuente
usted dice "REST no es HTTP", pero Roy Fielding parece bastante obsesionado con la idea de que el hipertexto es un requisito, con todo el trato de HATEOAS sin el cual, según él, no está haciendo un RESTO "adecuado". Mientras que el hipertexto! = HTTP, me pregunto cuánto puede hacer realmente fuera de HTTP ...
Andres F.
De acuerdo con esto ( roy.gbiv.com/untangled/2008/… ) Roy Fielding señala que el hipertexto, o su subconjunto, hipermedia, puede expresarse fuera de HTML siempre que admita algún tipo de enlace.
Gary Rowe el
3
HTTP funciona bien con REST porque ofrece verbos estandarizados para trabajar con URI que representan sustantivos en REST en un protocolo sin estado. Ideal. Sin embargo, en su disertación ( ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm ) señala que "REST no restringe la comunicación a un protocolo en particular, pero sí limita la interfaz entre los componentes y, por lo tanto, el alcance de supuestos de interacción e implementación que de otro modo podrían hacerse entre componentes ". Por lo tanto, es poco probable que una implementación FTP completa sea RESTful sin la administración de estado del lado del cliente.
Gary Rowe el
2
+1 para el enlace Martin Fowler. Como de costumbre, Martin Fowler ha escrito un artículo que describe un concepto de la manera más clara y concisa posible
Tom Carter
No cubriste state transferrepresentación. la acción de hablar o actuar en nombre de alguien es una representación de cómo funciona en este contexto?
Premraj
11

Si bien REST es una abreviatura de Representational State Transfer, puede ser más fácil considerar la idea de realizar varias acciones a través de una interfaz algo intuitiva.

Por ejemplo, una URL como http://www.mysite.com/FindProduct/125/ podría interpretarse como alguien que desea información sobre el producto con una identificación de 125.

Si bien REST generalmente se considera en términos de HTTP, el concepto podría aplicarse a otros protocolos como se señala en la referencia de Wikipedia.

Otros ejemplos de REST que pueden ser útiles:

JB King
fuente
2
¡Gracias por el enlace a "Learn REST: A Tutorial"! Ese es el primer tutorial que he leído que me deja con la sensación de que he aprendido algo concreto. Todo lo demás que he leído (incluido el artículo de Wikipedia) describe REST solo de las formas más abstractas, rodeado de jerga técnica.
Avian00
El primer enlace no funciona. Sin embargo, su respuesta es útil.
Entusiasta