2012-07-02 19 views
15

Estoy trabajando en alguna aplicación de tareas pendientes y me gustaría usar el método HTTP PATCH para agregar y eliminar todo porque esto sería semánticamente mejor que PUT.HTTP Patch XmlHttpRequest support

En el back-end estoy usando express.js (node.js) y en el front-end backbone.js (que usa jQuery para ajax).

Ya he probado si realmente funciona en Back y front-end en mi suite Desarrollos local (Archlinux, Cromo 20, Node.js 0,8, 2.X expreso) y funcionó:

aplicación. js

app.patch('/todo/:id', function(req, res){ 
    console.log('patch successfull'); 
} 

consola web de cromo

$.ajax({ 
    url: '/messages/4ff13720f00e2e2c4b000006', 
    type: 'PATCH', 
    data: { body: 'that is a patched message' } 
}); 

La solicitud fue mencionado una d también acciones de base de datos donde sea posible sin excepciones.

Ahora me gustaría saber cómo otros navegadores son compatibles con el método de parche. Miré con Google pero es difícil encontrar algo porque PATCH tiene múltiples significados ...

+1

"múltiples significados" que incluyen "parche de navegador", "parche de ojo" y "parche de pirata". El primero son los resultados que aparecen con mayor frecuencia. ': P' –

+0

Esto no responde a su pregunta, pero si' utiliza' el middleware 'express.methodOverride()', puede enviar un parámetro llamado '_method' con sus solicitudes' POST', y Express lo enrutará al método en el param (por ejemplo '_method = patch' ejecutaría' app.patch'). –

+0

Hola, lo sé, esa es la única forma común de enviar PUT y POST sin Javascript. Acabo de leer en stackoverflow que XmlHttpRequests es independiente del parche de método http, pero no estoy seguro de que este –

Respuesta

5

La mayoría de los navegadores restringen los métodos HTTP a GET/POST cuando se aplican a formularios. Sin embargo, con las solicitudes de AJAX, siempre que el servidor de respaldo pueda admitir el método, funcionará.

1

Los navegadores modernos son compatibles con PATCH (de hecho, con $ ajax puede hacer cualquier método que desee, siempre que el navegador no lo bloquee). Debajo de IE9 estás de suerte.

Con FF, Chrome y Safari no es un problema, porque esos comenzaron a actualizarse automáticamente hace años y hace más de dos años dejaron de bloquear métodos distintos de GET y POST.