如何全局配置Laravel的Route :: resource与ng.resource(每个ng资源的Laravel路由)兼容?

时间:2015-08-03 08:15:42

标签: angularjs laravel rest http laravel-5

Laravel 5使用put/patch动词更新资源,而Angular ng.resource默认使用post进行创建和更新。如何全局设置Laravel的Route::resource以遵循Angular行为(每个ng资源的Laravel路由)?

(也可以使Angular与Laravel兼容,但我不确定哪种方法更好。)

2 个答案:

答案 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