He leído mucho sobre esto, pero no pude llegar a una conclusión sobre este tema.
Pero nunca he usado los métodos PUT o DELETE HTTP Request. Mi tendencia es usar GET cuando las estadísticas del sistema (mi aplicación o sitio web) pueden no verse afectadas (como la lista de productos) y usar POST cuando se ve afectado (pedido realizado). ¿No es suficiente o me falta algo?
http
web
httprequest
web-deployment
Rupesh Patel
fuente
fuente
Respuestas:
DELETE es para eliminar el recurso de solicitud:
PUT es para poner o actualizar un recurso en el servidor:
Para conocer las especificaciones completas, visite:
Dado que los navegadores actuales, lamentablemente, no admiten ningún otro verbo que POST y GET en formularios HTML , por lo general no puede utilizar HTTP en toda su extensión con ellos (aunque aún puede secuestrar su envío a través de JavaScript). La ausencia de soporte para estos métodos en formularios HTML llevó a URI que contenían verbos, como por ejemplo
o aun peor
tunelizar eficazmente la semántica CRUD sobre HTTP. Pero los verbos nunca debieron ser parte de la URI. En su lugar, HTTP ya proporciona el mecanismo y la semántica para CRUD un recurso (por ejemplo, un pedido) a través de los métodos HTTP. HTTP es un protocolo y no solo un servicio de tunelización de datos.
Entonces, para eliminar un recurso en el servidor web, llamaría
y para actualizarlo llamarías
y proporcionar la Representación de recursos actualizada en el cuerpo de PUT para que el servidor web la aplique en ese momento.
Por lo tanto, si está creando algún tipo de cliente para una API REST , es probable que haga que envíe solicitudes PUT y DELETE. Esto podría ser un cliente construido dentro de un navegador, por ejemplo, enviando solicitudes a través de JavaScript o podría ser alguna herramienta que se ejecuta en un servidor, etc.
Para obtener más detalles, visite:
fuente
El uso de verbos HTTP Request como GET, POST, DELETE, PUT, etc. le permite crear aplicaciones web RESTful. Lea sobre esto aquí: http://en.wikipedia.org/wiki/Representational_state_transfer
La forma más fácil de ver los beneficios de esto es mirar este ejemplo. Cada marco MVC tiene una
Router/Dispatcher
que asigna URL-s a actionControllers. Entonces, URL como esta:/blog/article/1
invocaríablogController::articleAction($id);
Ahora este enrutador solo es consciente de la URL o/blog/article/1/
Pero si ese enrutador tuviera conocimiento del objeto de solicitud HTTP completo en lugar de solo la URL, podría tener acceso al verbo de solicitud HTTP (GET, POST, PUT, DELETE ...) y muchas otras cosas útiles sobre la solicitud HTTP actual.
Eso le permitiría configurar la aplicación para que pueda aceptar la misma URL y asignarla a diferentes actionControllers según el verbo HTTP Request.
Por ejemplo:
si desea recuperar el artículo 1, puede hacer esto:
pero si desea eliminar el artículo 1, hará lo siguiente:
Tenga en cuenta que ambas solicitudes HTTP tienen el mismo URI, / blog / article / 1, la única diferencia es el verbo de solicitud HTTP. Y según ese verbo, su enrutador puede llamar a diferentes actionController. Esto le permite crear URL-s ordenadas.
Lea estos dos artículos, pueden ayudarlo:
Symfony 2 - Conceptos básicos de HTTP
Symfony 2 - Enrutamiento
Estos artículos tratan sobre el framework Symfony 2, pero pueden ayudarte a descubrir cómo funcionan las solicitudes y respuestas HTTP.
¡Espero que esto ayude!
fuente
Create
y 1 paraDelete
. Si hace esto, su próxima búsqueda será " Cómo tener múltiples acciones de Publicación en un solo controlador ": P. No es que esto sea terrible, pero pierde la capacidad de implementar un recurso único a través de la acción del verbo en lugar de tener que proporcionar explícitamente el nombre de la acción en el URI.Aunque me arriesgo a no ser popular, digo que hoy en día no sirven .
Creo que fueron bien intencionados y útiles en el pasado cuando, por ejemplo, DELETE le dijo al servidor que eliminara el recurso encontrado en la URL proporcionada y PUT (con su hermano PATCH) le dijo al servidor que actualizara de una manera idempotente.
Las cosas evolucionaron y las URL se volvieron virtuales (ver reescritura de URL, por ejemplo) haciendo que los recursos perdieran su significado inicial de carpeta / subforder / archivo real y, por lo tanto, los verbos de acción CRUD cubiertos por los métodos del protocolo HTTP (GET, POST, PUT / PATCH, DELETE) perdieron la pista .
Tomemos un ejemplo:
En el lado izquierdo no está escrito el método HTTP, esencialmente no importa (POST y GET son suficientes) y en el lado derecho se utilizan los métodos HTTP apropiados.
El lado derecho se ve elegante, limpio y profesional. Imagine que ahora tiene que mantener un código que ha estado usando la elegante API y tiene que buscar dónde se realiza la llamada de eliminación. Vas a buscar "api / entidad" y entre los resultados que tendrá que ver que uno está haciendo ELIMINAR. O peor aún, tienes un programador junior que por error cambió PUT con DELETE y como URL es lo mismo sucedió.
En mi opinión, poner el verbo de acción en la URL tiene ventajas sobre el uso del método HTTP apropiado para esa acción, incluso si no es tan elegante. Si desea ver dónde se realiza la llamada de eliminación, solo tiene que buscar "api / entity / delete" y la encontrará de inmediato.
La creación de una API sin toda la variedad de métodos HTTP hace que sea más fácil de consumir y mantener posteriormente
fuente
Métodos seguros: Obtener recurso / Sin modificación en el recurso
Idempotente: Sin cambio en el estado del recurso si se solicita muchas veces
Métodos inseguros: Crear o actualizar recurso / Modificación en el recurso
No idempotente: Cambio en el estado del recurso si se solicita muchas veces
Según su requisito:
1) Para una operación segura e idempotente (Obtener recurso) use --------- GET METHOD
2) Para una operación insegura y no idempotente (Insertar recurso) use --------- POST METHOD
3) Para operación insegura e idempotente (Actualizar recurso) use --------- MÉTODO PUT
3) Para operación insegura e idempotente (Eliminar recurso) use --------- MÉTODO DELETE
fuente