Frage

Es fällt mir schwer, REST-Anfragen mit zu senden $resource zur Laravel-Anwendung.Erstens, $resource Die POST-Methode sendet eine Anforderungsnutzlast, die ich in Laravel nicht lesen kann, daher musste ich die Anforderung zum Senden umwandeln x-www-form-urlencoded Stattdessen musste ich eine Funktion einfügen, die Daten in diesem Format serialisiert.Warum ist dies nicht standardmäßig der Fall?

Ein weiteres Problem ist die PUT-Methode, diesmal in Laravel.Ich habe herausgefunden, dass Laravel RESTful-Controller keine PUT-Methoden unterstützen.Stattdessen sollte ich eine POST-Anfrage senden und einschließen _method: 'PUT' als Parameter.Hier ist der improvisierte Code:

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

Wenn ich nun eine PUT-Anfrage senden möchte, muss ich etwa Folgendes tun:

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

Also statt einstellen _method Zu 'PUT' Gibt es eine Möglichkeit, jedes Mal, wenn ich manuell eine PUT-Anfrage stellen möchte, diese als Standard festzulegen?Oder mache ich etwas falsch? Gibt es einen besseren Weg, dies zu tun?Ich verstehe die ganze REST-Sache wirklich nicht. Was nützt es, wenn es nicht gut unterstützt wird (Laravel)?Auch die Twitter-API verwendet nur POST und GET.Bitte korrigiere mich wenn ich falsch liege.Danke.

War es hilfreich?

Lösung

Versuchen Sie es so:

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

Andere Tipps

Nur diese Methode hat bei mir funktioniert ...

'update': {
                    url:  'urlTOApi/product/:id' + '?_method=PUT',
                    method: 'POST',
                    params: {id: '@id'},
                    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
                },
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top