He leído un par de definiciones y debates sobre las aplicaciones REST y / o RESTful, pero todavía no entiendo el significado real de la misma.
Por lo general, trabajo con las aplicaciones que obtienen datos a través de GET o envían datos a través de POST a algún servicio web (generalmente un script PHP) que luego obtiene datos de la base de datos o escribe en la base de datos.
Ahora, ¿es esta una aplicación RESTful? Si no, ¿cuál sería una aplicación RESTful? ¿Cuál es la diferencia entre el concepto RESTful y el concepto con el que trabajé hasta ahora? Por favor explique a través de un ejemplo.
Además, alguien habla sobre REST y alguien sobre aplicaciones RESTful. Descubrí que el término REST se refiere al concepto teórico, mientras que RESTful se usa cuando hablamos de la aplicación específica. ¿Es correcto o hay diferencias reales entre las aplicaciones REST y RESTful?
Respuestas:
Los atributos clave de una aplicación RESTful son: Toda la comunicación se realiza a través de http GET, POST, PUT, DELETE Y todos los elementos se abordan a través de una URL estándar del formulario,
http://your.site.com/salesapp/salesperson/0000001/details
es decir, solo una URL pura sin parámetros, etc. La URL identifica lo que GET , POST, PUT, DELETE identifica lo que quieres hacerle.La razón principal para hacer esto es que automáticamente tiene un servicio sin estado que puede equilibrarse con la carga, fallar, etc., etc.
La simple simplicidad del esquema hace que la interfaz sea muy limpia, desacoplando totalmente al cliente de cualquier implementación particular de back-end.
fuente
REST significa Transferencia de Estado representativa. Si su software cumple con las Restricciones REST, entonces se considera RESTful.
Bien, ahora que descaradamente descarto de Wikipedia, ¿qué significa esto realmente? Efectivamente significa usar los comandos HTTP incorporados como GET, POST, PUT, DELETE y algunos otros más raros para comunicarse entre un cliente y un servidor.
Lo que estás haciendo parece una aplicación RESTFul. Sin embargo, hay una gran diferencia entre servicios web RESTFul bien diseñados y montones de basura. Por ejemplo, el código PHP en el otro extremo del GET podría ejecutar un cambio de estado, lo que se consideraría incorrecto ya que un GET se considera una operación de solo lectura. También hay diferencias sutiles entre cómo se usa POST (nuevo) y PUT (reemplazar).
El artículo de Wikipedia sobre esto es realmente bueno, así que me detendré aquí.
fuente
Antes de continuar, esta pregunta relacionada puede ayudarlo
La diferencia entre REST y RESTful es simplemente la semántica. REST es un estilo arquitectónico aplicado a una relación cliente-servidor. RESTful es simplemente una forma de decirle a sus clientes que usa REST.
Muchas aplicaciones web afirman ser RESTful, pero en realidad solo son parcialmente conformes con las Restricciones REST (como Martijn Verburg también ha mencionado en su respuesta). Solo los enumeraré aquí, pero le recomiendo encarecidamente que lea el artículo:
Dado que usted menciona que trabaja en el lado del cliente, puede ser útil ver qué le dará y esperará una arquitectura REST como cliente de conexión. Aunque REST no es HTTP, es, con mucho, el protocolo más popular que admite lo que es REST, así que explicaré mi ejemplo al respecto.
Se espera que su cliente:
<link rel="pay" href="http://example.org/orders(1)/payment">
en HTML expresa una transición de estado para crear un recurso de pago a través de una POST con un cuerpo que contiene algún XML que representa los detalles del pago como el número de tarjeta de crédito , cantidad y así sucesivamente)Si hace lo anterior, entonces puede considerarse como un cliente REST, es posible que desee llamarlo una "aplicación RESTful", pero eso implicaría que está utilizando REST en el lado del cliente, lo cual es incorrecto, así que es mejor evitarlo el termino.
fuente
RESTful significa que la interfaz es un conjunto de objetos que se pueden leer y actualizar (y posiblemente eliminar). Es decir, no hay consultas de parámetros múltiples (solo el parámetro es el objeto que desea leer) y solo hay un tipo de operación que cambia cualquier cosa en el servidor, la carga de un nuevo estado.
Estas limitaciones aseguran que todas las solicitudes sean idempotentes (enviarlas varias veces no tiene ningún efecto adicional al enviarlas una vez). Esto es importante, porque la red puede fallar en cualquier momento y no entregar ninguna solicitud o respuesta, y con las solicitudes idempotentes, simplemente la envía nuevamente y no tiene que realizar una recuperación complicada.
fuente