services restful que protocol example español entre ejemplo diferencia rest

restful - rest vs soap



¿Cómo se implementan los formularios de "edición" de recursos de forma RESTANTE? (4)

Estamos tratando de implementar una API REST para una aplicación que tenemos ahora. Queremos exponer las capacidades de lectura / escritura para varios recursos utilizando la API REST. ¿Cómo implementamos la parte "forma" de esto? Obtengo cómo exponer la "lectura" de nuestros datos mediante la creación de URL RESTful que básicamente funcionan como llamadas a métodos y devuelven los datos:

GET /restapi/myobject?param=object-id-maybe

... y se devuelve un documento XML que representa cierta estructura de datos. Multa.

Pero, normalmente, en una aplicación web, una "edición" implicaría dos solicitudes: una para cargar la versión actual de los recursos y rellenar el formulario con esos datos, y uno para publicar los datos modificados de nuevo.

Pero no entiendo cómo harías lo mismo con los métodos HTTP a los que se asigna el REST. Es un PUT, ¿verdad? ¿Alguien puede explicar esto?

(Consideración adicional: la interfaz de usuario se haría principalmente con AJAX)

- Actualización: eso definitivamente ayuda. Pero, todavía estoy un poco confundido sobre el lado del servidor? Obviamente, no estoy tratando solo con archivos aquí. En el servidor, el código que responde a las solicitudes debe filtrar el método de solicitud para determinar qué hacer con él. ¿Es ese el "cambio" entre lecturas y escrituras?


Creo que debe separar los servicios de datos de la IU web. Al proporcionar servicios de datos, un sistema RESTful es totalmente apropiado, incluido el uso de verbos que los navegadores no pueden admitir (como PUT y DELETE).

Cuando describo una IU, creo que la mayoría de la gente confunde "RESTful" con "URL agradables y predecibles". No estaría tan preocupado por una sintaxis de URL puramente REST cuando describa la interfaz de usuario web.


La carga debería ser solo una solicitud GET normal, y el almacenamiento de datos nuevos debería ser un POST para la URL que actualmente tiene los datos ...

Por ejemplo, cargue los datos actuales de http://www.example.com/record/matt-s-example y luego, cambie los datos y vuelva a enviarlos a la misma URL con los nuevos datos.

Una solicitud PUT podría utilizarse al crear un nuevo registro (es decir, PONER los datos en una URL que no existe actualmente), pero en la práctica, simplemente POSTing es probablemente un mejor enfoque para comenzar.


Si envía los datos a través de HTML simple, está restringido a hacer un formulario basado en POST. El URI al que se envía la solicitud POST no debe ser el URI para el recurso que se está modificando. Debe enviar a un recurso de recopilación que AGREGA un recurso recién creado cada vez (con el URI para el nuevo recurso en el encabezado de Ubicación y un código de estado 202 ) o POST a un recurso de actualización que actualice un recurso con un URI provisto en el el contenido de la solicitud (o encabezado personalizado).

Si está utilizando un objeto XmlHttpRequest, puede establecer el método en PUT y enviar los datos al URI del recurso. Esto también puede funcionar con formularios vacíos si el servidor proporciona un URI válido para el recurso que aún no existe. El primer PUT crearía el recurso (devolviendo 202 ). Las PUT posteriores no harán nada si son los mismos datos o modificarán el recurso existente (en cualquier caso, se devuelve 200 a menos que se produzca un error).


Hay muchas alternativas diferentes que puede usar. Una buena solución se proporciona en la wiki de microformatos y también ha sido referenciada por la tripulación RESTful JSON. Lo más cerca que puedas de un estándar, realmente.

Operate on a Record GET /people/1 return the first record DELETE /people/1 destroy the first record POST /people/1?_method=DELETE alias for DELETE, to compensate for browser limitations GET /people/1/edit return a form to edit the first record PUT /people/1 submit fields for updating the first record POST /people/1?_method=PUT alias for PUT, to compensate for browser limitations