我的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。 –