¿Qué significa RESTful y por qué es significativo?

REST significa transferencia de estado representativa. Ahora veamos qué significa eso. Intentaré simplificarlo.

La premisa básica es esta: REST expone un conjunto de ‘recursos’ que pueden ser operados utilizando operaciones CRUD (crear, leer, actualizar y eliminar). Ahora, cuando solicita un ‘recurso’, puede solicitar una ‘representación’ específica del mismo. Entonces, si desea un SVG o JSON o HTML o XML o PDF, etc. La elección de la representación es del cliente, pero está restringida por lo que el servidor puede proporcionar. De ahí el concepto de ‘negociación de contenido’ (el cliente envía preferencias y el servidor actúa en consecuencia o envía una lista de lo que es aceptable, etc.)

Ahora, la ‘representación’ está en el lado del cliente. Así que he transferido el “estado de la aplicación” al cliente como una representación en esencia. Es decir, como servidor trato cada solicitud como si fuera nueva. No mantengo el estado. Es responsabilidad del cliente mantener eso. Por lo tanto, los estados en forma de representaciones se han transferido al cliente. Por lo tanto REST 🙂

Entonces, ¿por qué es importante? Bueno, esta es una vista muy poderosa. ¡Puede transferir el mantenimiento del estado a los clientes! Los servidores pueden sobrevivir a los reinicios sin tener una lógica de reanudación de estado complejo en su lugar. Puedo tener muchos servidores tontos que podrían atender la solicitud y no preocuparse de quién estaba trabajando en ella ‘una solicitud antes’, por lo que obtienes una escalabilidad casi gratuita 🙂 (Nada es gratis pero entiendes el punto. Es más gratis que basado en la sesión gestión / diseño del servidor). Por supuesto, la solicitud de autenticación / autorización debe estar codificada en cada solicitud, pero eso es lo que debe hacer de todos modos ya que no siempre puede confiar en el cliente 🙂 (Pensaría que es más fácil hacerlo una vez y mantener una sesión, pero si algo sale mal o el servidor se reinicia, es un poco engorroso recuperar la sesión si fue ‘solo en la memoria’)

Ahora puede cambiar las sesiones a las bases de datos y está bien. Sus servidores aún pueden sobrevivir a un reinicio. Pero entonces el DB podría convertirse en un cuello de botella y ese es un problema completamente diferente. Echa un vistazo a: http://stackoverflow.com/questio…

Además HTTP está bastante bien diseñado. Puede aprovechar su implementación y ya se han enviado mensajes de error bien definidos, solo eche un vistazo a los códigos de respuesta / error de HTTP. No es necesario crear códigos / objetos de error personalizados. Es un ‘conector’ bien definido con una ‘interfaz’ bien definida.

Usted aprovecha directamente los verbos HTTP en lugar de crear métodos especiales get / set / delete, etc. Simplemente hace que sus aplicaciones sean MUCHO más fáciles de diseñar y mantener si sigue los estándares.

Si desea obtener más información, le sugiero Wikipedia: http://en.wikipedia.org/wiki/Rep… y el libro RESTful Web Services de Richardson & Ruby

More Interesting

¿Dónde se puede encontrar inteligencia artificial en nuestras vidas?

¿Pueden las herramientas como WordPress, Webflow, wix, etc. ser un sustituto de la codificación HTML / CSS / JavaScript?

Cómo limpiar mi computadora para que sea más rápida

¿Las personas homofóbicas dejarán de usar computadoras porque Alan Turing, el hombre detrás de su innovación, era homosexual?

¿Por qué no podemos usar el lenguaje natural como nuestro lenguaje de representación en IA?

¿Qué conocimiento matemático debe tener un estudiante de informática?

¿No soy adecuado para aprender el aprendizaje automático y el aprendizaje profundo si solo puedo pasar como máximo 3 horas después del trabajo?

¿Cuánto más rápido es una computadora de cuatro núcleos frente a una de doble núcleo? ¿Vale la pena el dinero extra?

¿Cuáles son algunas aplicaciones sorprendentes de Machine Learning en el mundo real?

En Xcode, ¿por qué no puedes construir y ejecutar un archivo C ++? Por ejemplo, ¿por qué tiene que crear un proyecto completo si lo único que desea ejecutar es un archivo C ++ para programar concursos, etc.?

Cómo implementar un clasificador SVM entrenado con scikit-learn en C ++

¿Qué es la búsqueda de interpolación en estructuras de datos?

¿Qué piensan las personas que trabajan en el aprendizaje automático y la IA del trabajo de investigación de la actriz Kristen Stewart sobre IA?

¿Cómo usan los hackers Linux?

Si cada relación de causa y efecto puede modelarse como un cálculo (proceso determinista), ¿es la aleatoriedad verdadera una causa no causada (porque la aleatoriedad verdadera no puede surgir de la computación)?