我正在使用 AngularJS $资源工厂来访问客户端REST服务。一些参数是使用可选路径参数而不是查询参数定义的。
案例1:
我打电话给 myUrl / application-:applicationID / limit-:limit.json
使用:
{
applicationID:"1234",
limit: 10
}
我得到 myUrl / application-1234 / limit-10.json的正确网址
案例2:
我打电话给 myUrl / application-:applicationID / limit-:limit.json
使用:
{
applicationID:"1234"
}
我希望生成的网址忽略可选的limit
参数,然后向下折叠到 myUrl / application-1234.json
然而,我得到的是 myUrl / application-1234 / limit-.json
*编辑 我有几个API类别,例如Foo1,Foo2,每个都有几个端点,例如endPoint1,endPoint2,并使用@Deiter的帖子中的方法,我看不到一种方法来干净地列出我的所有资源而不使用临时类别名称然后将它们全部绑定最后在一起。
MyServices.factory ( 'MyAPI', ['$resource',
function ( $resource ) {
return {
Foo1: $resource ( '',
{
application: "@applicationID",
limit: "@limit"
},
{
endPoint1: {
...
},
endPoint2: {
url: "myURL/application-:applicationID/limit-:limit.json",
method:'GET',
isArray:true
},
}),
Foo2: $resource ( '',
{
application: "@applicationID"
},
{
endPoint1: {
...
},
endPoint2: {
...
}
}),
}
}]);
示例电话:
MyAPI.Foo1.endPoint1 ( { application: "1", limit: 5 } );
MyAPI.Foo2.endPoint2 ( { application: "1" } );
答案 0 :(得分:1)
您可以使用@Dieter评论中给出的相关答案,并创建单独的$资源,但我建议只需使URL的每个部分保持一致。通过以下任一方式执行此操作:
1)删除每个变量部分的静态分量(例如myUrl/1234/10
)
2)将实际值传递给您要使用的URL,并保持整个部分变量(例如myUrl/:applicationID/:limit
,并传入application-1234
& limit-10
)< / p>