Después de leer mucho sobre las diferencias entre REST y SOAP, tuve la impresión de que REST es solo otra palabra para HTTP. ¿Alguien puede explicar qué funcionalidad agrega REST a HTTP?
Nota : no estoy buscando una comparación de REST versus SOAP.
Actualización : gracias por sus respuestas. Ahora me ha quedado claro que REST es solo un conjunto de reglas sobre cómo usar HTTP. Por lo tanto, publiqué un seguimiento sobre cuáles son las ventajas de estas convenciones .
Nota : ahora entiendo el significado de REST; Como comenta Emil Ivanov , REST significa usar HTTP como debe ser. Sin embargo, no estoy seguro de si esto merece un término propio, y ciertamente no entiendo el bombo a su alrededor.
Respuestas:
No, REST es la forma en que se debe usar HTTP .
Hoy solo usamos un poquito de los métodos del protocolo HTTP, a saber,
GET
yPOST
. La forma REST de hacerlo es utilizar todos los métodos del protocolo.Por ejemplo, REST dicta el uso de
DELETE
para borrar un documento (ya sea un archivo, estado, etc.) detrás de un URI, mientras que, con HTTP, usaría mal unaGET
o unaPOST
consulta como...product/?delete_id=22
.fuente
HTTP es un protocolo utilizado para la comunicación, generalmente utilizado para comunicarse con recursos de Internet o cualquier aplicación con un cliente de navegador web.
REST significa que el concepto principal que está utilizando al diseñar la aplicación es el Recurso: para cada acción que desee realizar, debe definir un recurso en el que generalmente solo realiza la operación CRUD, que es una tarea simple. para eso es muy conveniente usar 4 verbos usados en el protocolo HTTP contra las 4 operaciones CRUD (Get for Read, POST es para CREATE, PUT es para UPDATE y DELETE es para DELETE). eso es diferente al concepto anterior de RPC (Remote Procedure Call), en el que tiene un conjunto de acciones que desea realizar como resultado de la llamada del usuario. si piensa, por ejemplo, en cómo describir un facebook como en una publicación, con RPC puede crear servicios llamados AddLikeToPost y RemoveLikeFromPost, y administrarlo junto con todos sus otros servicios relacionados con publicaciones FB, por lo que no necesitará crear especiales objeto para Me gusta. con REST tendrá un objeto Like que se administrará por separado con las funciones Eliminar y Crear. También significa que describirá una entidad separada en su base de datos. eso puede parecer una pequeña diferencia, pero trabajar de esa manera generalmente generaría un código mucho más simple y una aplicación mucho más simple. con ese diseño, la mayor parte de la lógica de la aplicación es obvia a partir de la estructura (modelo) del objeto, a diferencia de RPC con el que normalmente tendría que agregar explícitamente mucha más lógica.
diseñar una aplicación RESTful suele ser mucho más difícil porque requiere que describas cosas complicadas de una manera simple. Describir todas las funcionalidades utilizando solo las funciones CRUD es complicado, pero después de hacerlo, su vida sería mucho más simple y encontrará que escribirá métodos mucho más cortos.
Una arquitectura REST más de restricción presente es no usar el contexto de sesión cuando se comunica con el cliente (sin estado), lo que significa que toda la información necesita entender quién es el cliente y qué quiere que se transmita con el mensaje web. cada llamada a una función es autodescriptiva, no hay una conversación previa con el cliente a la que se pueda hacer referencia en el mensaje. por lo tanto, un cliente no podría decirle "dame la siguiente página" ya que no tienes una sesión para almacenar cuál es la página anterior y qué tipo de página deseas, el cliente tendría que decir "mi nombre es yuval, obtén me página 2 de una publicación específica en un foro específico ". eso significa que un poco más de datos tendrían que transferirse en la comunicación, pero piense en la diferencia entre encontrar un error reportado en la función "Consiga la próxima página" en lugar de "
Por supuesto, hay mucho más, pero en mi opinión, esos son los conceptos principales en una cucharadita.
fuente
HTTP es un protocolo de aplicación. REST es un conjunto de reglas que, cuando se siguen, le permiten crear una aplicación distribuida que tiene un conjunto específico de restricciones deseables.
Si está buscando las restricciones más importantes de REST que distinguen una aplicación RESTful de cualquier aplicación HTTP, diría que la restricción de "autodescripción" y la restricción de hipermedia (también conocida como Hypermedia como el motor del estado de la aplicación (HATEOAS)) el más importante.
La restricción de autodescripción requiere que una solicitud RESTful sea completamente autodescriptiva en la intención del usuario. Esto permite que los intermediarios (proxies y cachés) actúen sobre el mensaje de manera segura.
La restricción de HATEOAS se trata de convertir su aplicación en una web de enlaces donde el estado actual del cliente se basa en su lugar en esa web. Es un concepto complicado y requiere más tiempo para explicarlo que el que tengo ahora.
fuente
Según tengo entendido, REST impone el uso de los comandos HTTP disponibles como estaban destinados a ser utilizados.
Por ejemplo, podría hacer:
Pero con descanso usaría el método de solicitud "DELETE", eliminando la necesidad del parámetro de consulta "método"
fuente
No exactamente...
http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.looselycoupled.com/glossary/SOAP
fuente
REST es una forma específica de abordar el diseño de grandes sistemas (como la web).
Es un conjunto de 'reglas' (o 'restricciones').
HTTP es un protocolo que intenta obedecer esas reglas.
fuente
REST = Transferencia de estado representativa
REST es un conjunto de reglas que, cuando se siguen, le permiten crear una aplicación distribuida que tiene un conjunto específico de restricciones deseables.
REST es un protocolo para intercambiar cualquier mensaje (XML, JSON, etc.) que pueda usar HTTP para transportar esos mensajes.
caracteristicas:
No tiene estado, lo que significa que, idealmente, no se debe mantener ninguna conexión entre el cliente y el servidor. Es responsabilidad del cliente pasar su contexto al servidor y luego el servidor puede almacenar este contexto para procesar la solicitud adicional del cliente. Por ejemplo, la sesión mantenida por el servidor se identifica mediante el identificador de sesión pasado por el cliente.
Ventajas de la apatridia:
Desventajas de la apatridia:
Métodos HTTP admitidos por REST:
OBTENGA: / string / someotherstring Es idempotente y lo ideal es que devuelva los mismos resultados cada vez que se realiza una llamada
PUT: Igual que GET. Idempotente y se utiliza para actualizar recursos.
POST: debe contener una url y un cuerpo Usado para crear recursos. Las llamadas múltiples deberían idealmente devolver resultados diferentes y deberían crear múltiples productos.
BORRAR: Se usa para eliminar recursos en el servidor.
CABEZA:
El método HEAD es idéntico a GET, excepto que el servidor NO DEBE devolver un cuerpo de mensaje en la respuesta. La metainformación contenida en los encabezados HTTP en respuesta a una solicitud HEAD DEBE ser idéntica a la información enviada en respuesta a una solicitud GET.
OPCIONES
Este método permite al cliente determinar las opciones y / o requisitos asociados con un recurso, o las capacidades de un servidor, sin implicar una acción de recurso o iniciar una recuperación de recursos.
Respuestas HTTP
Vaya aquí para todas las respuestas .
Aquí hay algunos importantes: 200 - OK 3XX - Información adicional necesaria del cliente y redireccionamiento de URL 400 - Solicitud incorrecta
401 - No autorizado para acceder
403 - Prohibido
La solicitud fue válida, pero el servidor rechaza la acción. Es posible que el usuario no tenga los permisos necesarios para un recurso o que necesite una cuenta de algún tipo.
404 - No encontrado
El recurso solicitado no se pudo encontrar, pero puede estar disponible en el futuro. Se permiten solicitudes posteriores del cliente.
405 - Método no permitido No se admite un método de solicitud para el recurso solicitado; por ejemplo, una solicitud GET en un formulario que requiere que los datos se presenten a través de POST, o una solicitud PUT en un recurso de solo lectura.
404 - Solicitud no encontrada
500 - Falla interna del servidor
502 - Error de puerta de enlace incorrecta
fuente
HTTP es un protocolo de comunicaciones que transporta mensajes a través de una red. SOAP es un protocolo para intercambiar mensajes basados en XML que pueden usar HTTP para transportar esos mensajes. Rest es un protocolo para intercambiar cualquier mensaje (XML o JSON) que pueda usar HTTP para transportar esos mensajes.
fuente
HTTP is a contract, a communication protocol and REST is a concept, an architectural style
que puede usar HTTP, FTP u otros protocolos de comunicación pero se usa ampliamente con HTTP.REST implies a series of constraints about how Server and Client should interact
.HTTP is a communication protocol with a given mechanism for server-client data transfer
, se usa más comúnmente en REST API solo porqueREST was inspired by WWW (world wide web) which largely used HTTP
antes de que se definiera REST, por lo que es más fácil implementar el estilo REST API con HTTP.1.
La interacción entre el servidor y el cliente debe describirse solo a través de hipertexto.2.
El servidor y el cliente deben estar acoplados libremente y no hacer suposiciones el uno del otro. El cliente solo debe conocer el punto de entrada de recursos. El servidor debe proporcionar los datos de interacción en la respuesta.3.
El servidor no debe almacenar ninguna información sobre el contexto de la solicitud. Las solicitudes deben ser independientes e idempotentes (significa que si la misma solicitud se repite infinitamente, se recupera exactamente el mismo resultado)Y HTTP es solo un protocolo de comunicación (una herramienta) que puede ayudar a lograr esto.
Para obtener más información, consulte estos enlaces:
https://martinfowler.com/articles/richardsonMaturityModel.html http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
fuente
REST no está necesariamente vinculado a HTTP . Los servicios web RESTful son solo servicios web que siguen una arquitectura RESTful.
fuente
1-Client-server
,2-stateless
,3-casheable
. Entonces, ¿qué características / restricciones adicionales REST puso en HTTP? ¿Qué podemos hacer con REST que no se puede hacer solo con HTTP?De Usted no sabe la diferencia entre HTTP y REST
fuente
Las API REST deben ser impulsadas por hipertexto
Desde el blog de Roy Fielding, aquí hay un conjunto de formas de verificar si está creando una API HTTP o una API REST:
fuente