Laravel 5使用put/patch
动词更新资源,而Angular ng.resource默认使用post
进行创建和更新。如何全局设置Laravel的Route::resource
以遵循Angular行为(每个ng资源的Laravel路由)?
(也可以使Angular与Laravel兼容,但我不确定哪种方法更好。)
答案 0 :(得分:3)
我不知道laravel的REST功能。但我仍然建议修改Angular的行为。
<强> PUT 强>
实现PUT非常简单。
您可以在使用$ resource(url,parameters,actions)创建工厂时修改ng-resource的行为,第三个参数描述自定义操作...
在https://docs.angularjs.org/api/ngResource/service/ $资源中有关于创建PUT方法的示例,该方法将在服务上以update
和实例上的$update
提供。 :
app.factory('Notes', function($resource) {
return $resource('/notes/:id', null,
{
'update': { method:'PUT' }
});
}]);
// In our controller we get the ID from the URL using ngRoute and $routeParams
// We pass in $routeParams and our Notes factory along with $scope
app.controller('NotesCtrl', ['$scope', '$routeParams', 'Notes',
function($scope, $routeParams, Notes) {
// First get a note object from the factory
var note = Notes.get({ id:$routeParams.id });
$id = note.id;
// Now call update passing in the ID first then the object you are updating
Notes.update({ id:$id }, note);
// This will PUT /notes/ID with the note object in the request payload
});
<强> PATCH 强>
理论上也可以创建PATCH行为,这里描述了它 - Partial Updates (aka PATCH) using a $resource based service?
但我不会用ng-resource做到这一点。您可以通过定义transformRequest或transformResponse函数来做很多事情(我使用它来利用Java Spring REST API)。但是仍然ng-resource不支持PATCH,所以如果你需要我宁愿尝试不同的REST层。
答案 1 :(得分:-1)
那是错的,您也可以将PUT / PATCH与angularjs一起使用,请在$http reference page
阅读快捷方式
也可以使用快捷方式。所有快捷方法都需要传入URL,并且必须传递请求数据以用于POST / PUT请求。
$http.get('/someUrl').then(successCallback);
$http.post('/someUrl', data).then(successCallback);
完整的快捷方式列表:
$http.get
$http.head
$http.post
$http.put
$http.delete
$http.jsonp
$http.patch