AngularJS $-Ressourcenanfragen an Laravel – POST und PUT
-
21-12-2019 - |
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.
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'}
},