我正在尝试使用 ngResource 来使用 Firebase Rest API。此 API 使用略有不同的 URL 来检索集合和单个记录。例如,我有一个可以通过以下方式访问的集合:
https://angular-resource-test.firebaseIO.com/systems.json
但是如果我想访问我使用的单个系统:
https://angular-resource-test.firebaseIO.com/systems/1.json
如何在资源声明中为此指定基于参数的 URL?
通常我会做类似的事情
app.factory('System', ['$resource', function($resource) {
var System = $resource(
'https://angular-resource-test.firebaseIO.com/systems/:id.json',
{id: "@id"},
{update: {method: "PUT"}}
);
return System;
}]);
但是集合失败,因为它缺少尾随 .json。或者,当我指定适用于集合的 URL 时,选择单个行的情况会失败。请参阅此 jsfiddle 的示例:
最佳答案
有两种方法可以在资源中发送 HTTP GET。
- get:期望接收一个对象
- 查询:期望接收一个数组
您的 api 不是很安静,因此,您将需要 2 个资源来执行您想要的操作,因为它们使用不同的 URI(请参阅 Carl 的答案)。我不知道您是否可以编辑 REST 服务,但最好的方法是: https://angular-resource-test.firebaseIO.com/systems/用于查询(需要一个数组) https://angular-resource-test.firebaseIO.com/systems/:id为了得到。 (期望一个对象)
通过此服务,您可以使用您的资源:
var System = $resource(
'https://angular-resource-test.firebaseIO.com/systems/:id',
{id: "@id"},
{update: {method: "PUT"}}
);
你可以这样打电话:
var systems = System.query({});
var system = System.get({id:1});
关于javascript - 如何使用 ngResource 为集合和单个记录指定不同的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15506940/