我的REST API配置爲接受這種要求補丁請求發送到錯誤的URL
public function lockUserAction($slug)
{} // "lock_user" [PATCH] /users/{slug}/lock
所以發送補丁請求
/api/users/2/lock
將鎖定與用戶ID = 2。這是我的休息服務angular.js
angular.module('UserService',['ngResource']).factory('User', function($resource){
var User = $resource('/api/users/:id',
{},
{
list: { method: 'GET' },
lock: { method: 'PATCH' }
}
);
return User;
});
列表工作只是finde,但鎖定不起作用。控制檯打印:
PATCH /api/users 405 (Method Not Allowed)
我調用它像這樣
$scope.lock = function(user){
user.$lock();
}
在錯誤消息我看到了網址/api/users
而不是/api/users/2/lock
。這是正常的行爲嗎?當然,除了僅在/api/users
上僅允許/api/users/{slug}/lock
的GET請求和PATCH請求之外,列表除外。
任何想法爲什麼/ api/users被調用,而不是/ api/users/{slug}/lock。任何想法如何解決這一問題?
補丁?你正在編寫自己的HTTP動詞?這很好,但看看你的服務器端發生了什麼。由於某些原因,這些請求會返回405錯誤。確保傳入的URL有一個ID參數。 – jpsimons
@darkporter http://tools.ietf.org/html/rfc5789 – jusio
@darkporter我不做自己的HTTP動詞。我在使用PATCH的後端使用FOSRestBundle。是的,但似乎調用了錯誤的URL。 –