angularjs – 使用复合键参数的ngResource查询

我有一个资源,答案,它有一个由QuestionnaireId和QuestionId组成的复合键. ngResource代码如下:

function answerResource($resource) {
    return $resource("/api/answers/:questionnaireId/:questionId",
        {
            questionnaireId: "@questionnaireId",
            questionId: "@questionId"
        }
    );
}

我想用问卷ID查询此资源并获取所有答案.如果我使用:

answerResource.query(
    {
        questionnaireId: questionnaireId
    }
);

然后请求的网址是:

/api/answers/123

当我希望它是:

/api/answers?questionnaireId=123

否则,我需要为查询搜索处理两个路由 – 一个在查询字符串中具有Id,另一个在ID作为url路径的一部分. (我也有搜索文本的查询,其中问卷ID可能不存在,那将使用像/ api / answers?q = sometext这样的网址).

当然,任何.query参数都应该作为查询字符串传递,而不是作为路径的一部分传递.我如何获得所需的行为?

最佳答案 我能提出的最佳选择是在资源上创建一个新的搜索方法,该方法没有url中的参数:

// normal resource definition here...
,{
    search: {
        method: "GET",
        url: "/api/answers",
        isArray: true
    }
}

使用复合键值调用它会将它们作为查询字符串参数附加,而不是作为URL的一部分附加,例如/ API /答案?questionnaireId = 123

点赞