Question

J'ai du mal à envoyer des requêtes REST avec $resource à l'application Laravel.Tout d'abord, $resource La méthode POST envoie la charge utile de la demande, que je ne parviens pas à lire dans Laravel, j'ai donc dû transformer la demande à envoyer x-www-form-urlencoded à la place, et j'ai dû mettre une fonction qui sérialise les données dans ce format.Pourquoi n'est-ce pas par défaut ?

Un autre problème est la méthode PUT, cette fois dans Laravel.J'ai découvert que les contrôleurs Laravel RESTful ne prennent pas en charge les méthodes PUT.Au lieu de cela, je devrais envoyer une requête POST et inclure _method: 'PUT' comme paramètre.Voici le code improvisé :

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()
        }
    })
}

Maintenant, si je veux envoyer une requête PUT, je dois faire quelque chose comme ceci :

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

Donc au lieu de définir _method à 'PUT' à chaque fois manuellement lorsque je souhaite faire une requête PUT, existe-t-il un moyen de la définir par défaut ?Ou est-ce que je fais quelque chose de mal, existe-t-il une meilleure façon de procéder ?Je ne comprends vraiment pas tout le truc REST, à quoi ça sert s'il n'est pas bien supporté (Laravel) ?.L'API Twitter utilise également uniquement POST et GET.Corrigez-moi si j'ai tort, s'il-vous plait.Merci.

Était-ce utile?

La solution

Essayez de cette façon :

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

Autres conseils

Seule cette méthode a fonctionné pour moi...

'update': {
                    url:  'urlTOApi/product/:id' + '?_method=PUT',
                    method: 'POST',
                    params: {id: '@id'},
                    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
                },
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top