En busca de explicaciones claras y concisas de este concepto.¿Puede explicar el concepto web de RESTful?
Respuesta
Una aplicación REST es una aplicación que expone su estado y funcionalidad como un conjunto de recursos que los clientes pueden manipular y se ajusta a un cierto conjunto de principios:
- todos los recursos son únicamente direccionable, generalmente a través de URIs ; otro direccionamiento también puede ser utilizado, sin embargo.
- Todos los recursos se pueden manipular a través de un conjunto restringido de acciones conocidas, generalmente CRUD (crear, leer, actualizar, borrar), representadas más a menudo a través de HTTP POST, GET, PUT y DELETE; aunque puede ser un conjunto diferente o un subconjunto; por ejemplo, algunas implementaciones limitan ese conjunto para leer y modificar solamente (GET y PUT) por ejemplo
- Los datos para todos los recursos se transfieren a través de cualquiera de un número limitado de pozos. representaciones conocidas, generalmente HTML, XML o JSON;
- La comunicación entre el cliente y la aplicación se realiza a través de un protocolo sin estado que permite intermediarios en múltiples capas que pueden redirigir y almacenar en caché las solicitudes y los paquetes de respuesta de forma transparente para el cliente y la aplicación.
El Wikipedia article señalado por Tim Scott proporciona más detalles sobre el origen de REST, principios detallados, ejemplos, etc.
Lamentablemente, deducir que los mapas CRUD para OBTENER, PONER, PUBLICAR, ELIMINAR es extremadamente engañoso cuando intenta comprender DESCANSO. La siguiente pregunta es siempre, "pero, ¿y si tengo que hacer otras operaciones?". Como mencionas en un comentario posterior, PUT puede crear y, como explico, POST no puede crear. Olvídate de CRUD! –
XML y Json son tipos de medios horribles para usar en REST. El único escenario en el que realmente funcionan es cuando se realiza AJAX en un navegador en el que se está descargando un script de Java que comprende el formato de XML/JSON. En otros escenarios, necesita usar un tipo de datos más semánticamente significativo. –
@Darell: XML y JSON son dos de los formatos de representación de recursos más utilizados, por lo que deben mencionarse, independientemente de si son los mejores. Lo mismo aplica para CRUP y su mapeo de verbos HTTP. –
Significa el uso de nombres para identificar tanto comandos como parámetros.
En lugar de nombres que sean meros identificadores o apodos, el nombre en sí mismo contiene información. Específicamente, información sobre lo que se solicita, parámetros para la solicitud, etc.
Los nombres no son "raíces" sino más bien acciones más datos de entrada.
Mejor explicación alguna vez – AymenDaoudi
Francamente, la respuesta depende del contexto. REST y RESTful tienen significados que dependen del idioma o marco que estés usando o de lo que trates de lograr. Como ha etiquetado su pregunta en "servicios web" responderé en el contexto de los servicios web RESTful, que todavía es una categoría amplia.
Los servicios web RESTful pueden significar cualquier cosa desde una interpretación REST estricta, donde todas las acciones se realizan de una manera estrictamente "RESTful", a un protocolo que es XML simple, lo que significa que no es SOAP o XMLRPC. En el último caso, este es un nombre inapropiado: un protocolo REST como este es realmente "plain old XML" (or "POX") protocol. Mientras que los protocolos REST usualmente usan XML y, como tales, son protocolos POX, esto no necesariamente tiene que ser el caso, y el inverso no es verdadero (simplemente porque un protocolo usa XML no lo hace RESTful).
Sin más, una verdadera API REST consiste en acciones tomadas en objetos, representadas por el método HTTP utilizado y la URL de ese objeto. Las acciones son sobre los datos y no sobre lo que hace el método. Por ejemplo, las acciones de CRUD (crear, leer, actualizar y eliminar) pueden asignarse a un determinado conjunto de URL y acciones. Digamos que estás interactuando con una API de fotos.
- Para crear una foto, debe enviar datos a través de una solicitud POST a/fotos. Le permitirá saber dónde está la foto a través del encabezado de ubicación, p./photos/12345
- Para ver una foto, debe usar GET/photos/12345
- Para actualizar una foto, debe enviar datos a través de una solicitud PUT a/photos/12345.
- Para eliminar una foto, debe usar DELETE/photos/12345
- Para obtener una lista de fotos, debe usar GET/fotos.
Se pueden implementar otras acciones, como la capacidad de copiar fotos mediante una solicitud COPY.
De esta forma, el método HTTP que está utilizando se correlaciona directamente con la intención de su llamada, en lugar de enviar la acción que desea realizar como parte de la API. Para contrastar, una API no RESTful podría usar muchas más URL y solo usar las acciones GET y POST. Por lo tanto, en este ejemplo, es posible que vea:
- Para crear una foto, envía un POST a/fotos/Crear
- Para ver una foto, envía un GET a/fotos/view/12345
- Para actualizar una foto, envíe un mensaje POST a/fotos/actualizar/12345
- Para eliminar una foto, envíe un GET a/photos/delete/12345
- Para obtener una lista de fotos, envíe un GET a/photos/list
Usted observe cómo en este caso las URL son diferentes y los métodos se eligen solo por necesidad técnica: para enviar datos, debe usar un POST, mientras que todas las demás solicitudes usan GET.
en realidad, POST se utiliza para representar Crear y PONER para actualizar. sin embargo, dado que algunas implementaciones de servidor no admiten PUT de forma nativa, POST está sobrecargado para ambas operaciones. –
Eso es una cuestión de debate, de verdad. PUT se usa a menudo para la creación. :) – wuputah
Disculpe, no hay debate. :-) RFC 2616 especifica exactamente las operaciones para POST y PUT. El párrafo 2.5, método POST solicita que la entidad incluida sea aceptada como un nuevo subordinado de la URL solicitada. Parrafo 26, el método PUT solicita que la entidad incluida se almacene en la URL especificada. –
sólo algunos puntos:
- reparador no depende de la estructura que utilice. Depende del estilo arquitectónico que describe. Si no sigue las restricciones, no es RESTful. Las limitaciones están definidas en media página del Capítulo 5 del documento de Roy Fielding, lo invito a que vaya y lo lea.
- El identificador es opaco y no contiene información más allá de la identificación de un recurso. Es un nmae, no datos de entrada, solo nombres. en lo que respecta al cliente, no tiene lógica o valor más allá de saber cómo construir querystrings desde una etiqueta de formulario. Si su cliente construye sus propios URI usando un esquema que ha decidido de antemano, no estará tranquilo.
- El uso o no de todos los verbos http no es realmente la restricción, y es perfectamente aceptable diseñar una arquitectura que solo admita POST.
- El almacenamiento en caché, el alto desacoplamiento, la falta de estado de sesión y la arquitectura en capas son los puntos de los que pocos hablan, pero los más importantes para el éxito de una arquitectura RESTful.
Si no pasa la mayor parte de su tiempo elaborando su formato de documento, probablemente no esté haciendo REST.
La mejor explicación que encontré está en este .
he aprendido la mayor parte de la lectura de los artículos publicados en InfoQ.com: http://www.infoq.com/rest y el libro Servicios Web REST (http://oreilly.com/catalog/9780596529260/).
./alex
responsabilidad: Soy asocia con InfoQ.com, pero esta recomendación se basa en mi propia experiencia de aprendizaje.
RESTO a modo de ejemplo:
POST /user
fname=John&lname=Doe&age=25
El servidor responde:
200 OK
Location: /user/123
En el futuro, a continuación, puede recuperar la información de usuario:
GET /user/123
El servidor responde:
200 OK
<fname>John</fname><lname>Doe</lname><age>25</age>
Para actualizar:
PUT /user/123
fname=Johnny
- 1. ¿Puede el servicio web RESTful beneficiarse del protocolo SPDY?
- 2. ¿Alguien puede explicar el attr?
- 3. ¿Alguien puede explicar el mapeo de servlets?
- 4. ¿Alguien puede explicar OAuth?
- 5. ¿Alguien puede explicar el archivo Spring web.xml?
- 6. RESTful web services
- 7. ¿Alguien puede explicar el eclipse.p2.profile
- 8. ¿Alguien puede explicar el atributo HTML5 aria- *?
- 9. Tutoriales de servicio web RESTful para .NET
- 10. CherryPy y RESTful web api
- 11. Restful vs Other Web Services
- 12. ¿Alguien puede explicar Microsoft Unity?
- 13. puede alguien explicar la diferencia
- 14. ¿Puede explicar onCreate and Bundles?
- 15. ¿Alguien puede explicar esta sintaxis?
- 16. ¿Alguien puede diagramar el concepto de SVN Branching?
- 17. ¿Puede explicar el uso de sys.sp_addextendedproperty en el siguiente código?
- 18. ¿Alguien puede explicar este truco 'doble negativo'?
- 19. Servicios web RESTful con ASP.NET MVC
- 20. Qué son los servicios web RESTful
- 21. Ejemplos de servicios web RESTful para WCF
- 22. Rails 3 Servicios web RESTful con json
- 23. ¿Alguien puede explicar el sistema de enrutamiento de Kohana 3?
- 24. concepto de concepto de página maestra en python
- 25. ¿Alguien puede explicarme el concepto de adaptador enchufable con buen ejemplo?
- 26. ¿Son posibles los servicios web RESTful asíncronos?
- 27. ¿Cómo consumir el servicio web RESTful en mi proyecto JSF?
- 28. Android - Crear servicio web RESTful - Alojarlo en el móvil
- 29. ¿Alguien puede explicar este método de Javascript?
- 30. ¿Alguien puede explicar este código de Java
Esta pregunta puede ayudar a dar el sabor, o al menos un ejemplo sencillo, de un servicio web REST: http://stackoverflow.com/questions/502547/rosetta-stone-restful – dreeves