2

我正在使用AngularJS $resource 工厂来访问客户端 REST 服务。一些参数是用可选的路径参数而不是查询参数定义的。

情况1:

我调用myUrl/application-:applicationID/limit-:limit.json

和:

{
    applicationID:"1234",
    limit: 10
}

我得到了myUrl/application-1234/limit-10.json的正确 URL

案例二:

我调用myUrl/application-:applicationID/limit-:limit.json

和:

{
    applicationID:"1234"
}

我希望生成的 url 忽略可选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" } ); 
4

1 回答 1

1

您可以使用@Dieter 评论中给出的相关答案,并创建单独的 $resources,但我建议您简单地使 URL 的每一部分保持一致。通过以下任一方式执行此操作:

1)去除每个可变部分的静态组件(例如。myUrl/1234/10

2)将实际值传递给您要使用的 URL,并保留整个部分变量(例如myUrl/:applicationID/:limit,并传入application-1234& limit-10

于 2014-02-06T14:27:37.467 回答