Restangular函数中的'Route'有什么用途oneUrl()和allUrl()

时间:2014-10-22 00:21:16

标签: angularjs rest restangular

oneUrl功能的签名:oneUrl(route, url)
并从文档:

  

oneUrl(route,url):这将创建一个新的Restangular对象,   只是指向具有指定URL的一个元素的指针。

对我而言,当您为资源提供网址时,设置Route似乎毫无用处。为什么它存在于参数列表中?为什么强制要求?它怎么用?

1 个答案:

答案 0 :(得分:6)

在我使用oneUrl时,我发现路由名称用于构建后续PUTDELETE操作的网址。例如(伪代码):

// "GET /api/v2/users/3/ HTTP/1.1" 200 184
var user = Restangular.oneUrl('myuser', 'http://localhost:8000/api/v2/users/3').get();
user.name = 'Fred';
// the following uses the route name and not the URL:
// "PUT /api/v2/myuser HTTP/1.1 404 100
user.put();

我对这种行为感到惊讶。我希望put()使用与get()相同的网址;这对我的情况很有帮助。

我的API使用JSON有效内容中的绝对URL导航到所有相关资源,我想使用oneUrl()GET/PUT实例,而无需重新创建JS代码中的路由。但我对Restangular很新,所以我可能没有正确的心理模型。