Pregunta

Estoy teniendo dificultades para enviar solicitudes REST con $resource a la aplicación Laravel.En primer lugar, $resource El método POST envía la carga útil de solicitud, que no puedo leer en Laravel, por lo que tuve que transformar la solicitud para enviarla. x-www-form-urlencoded en cambio, tuve que poner una función que serialice datos en ese formato.¿Por qué no es esto por defecto?

Otro problema es el método PUT, esta vez en Laravel.Descubrí que los controladores Laravel RESTful no admiten métodos PUT.En su lugar, debería enviar una solicitud POST e incluir _method: 'PUT' como parámetro.Aquí está el código improvisado:

factory('User',function($resource){
    return $resource(apiPath + 'user/:id', {}, {
        update: {
            method: 'POST', 
            params: {id: '@id'}, 
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}, 
            transformRequest: transform()
        }
    })
}

Ahora si quiero enviar una solicitud PUT, tengo que hacer algo como esto:

var userData = {id: 1, firstName: 'John', lastName: 'Doe'};
userData._method = 'PUT';
User.update(userData);

Así que en lugar de establecer _method a 'PUT' Cada vez que quiero realizar una solicitud PUT manualmente, ¿hay alguna forma de hacerla predeterminada?¿O estoy haciendo algo mal? ¿Existe una mejor manera de hacerlo?Realmente no entiendo todo el asunto del REST, ¿qué sentido tiene si no está bien soportado (Laravel)?.La API de Twitter también sólo utiliza POST y GET.Por favor corrígeme si estoy equivocado.Gracias.

¿Fue útil?

Solución

Pruebe de esta manera:

update: {
    method: 'POST', 
    params: {id: '@id'}, 
    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
    transformRequest: function(data){
        data._method = 'PUT';
        return data;
    }
}

Otros consejos

Sólo este método funcionó para mí ...

'update': {
                    url:  'urlTOApi/product/:id' + '?_method=PUT',
                    method: 'POST',
                    params: {id: '@id'},
                    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
                },

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top