在 url/user/:userId
中,该userId
部分是占位符。您是在告诉 AngularJS 将其替换为实际的用户 id 以获取真实的 url。
在您编写的第二部分中,{userId : '@id'}
您告诉 AngularJS,如果userId
未指定 a,它应该使用id
对象中的属性。
我将尝试用几个例子来说明:
如果你这样做
var user = User.get({userId : 123});
您已经明确指定了一个值,userId
因此 Angular 将使用它来创建 url /user/123/
。但是,如果你这样做
var user = User();
user.id = 123;
user.get()
在这种情况下,您没有明确指定 的值userId
,因此 Angular 将使用user.id
for的值userId
,并再次创建 url /user/123/
。
就像 rajkamal 提到的,这对于非 GET 操作很有用。一个真正的用例是您执行以下操作:
// user wants to work with Post 10. So we fetch that
var post = Post.get({postId : 10});
// user works with it, makes some changes
post.body = 'New body';
post.topic = 'New topic';
// user is done, and wants to save. You make a POST call
// without having to specify it's id again
post.save();