Javascript 使用Angular资源查询带有字符串参数的REST API

Javascript 使用Angular资源查询带有字符串参数的REST API,javascript,angularjs,rest,Javascript,Angularjs,Rest,我正在尝试查询我在本地托管的REST API,其工作原理如下: http://localhost:51608/api/UserRole?email=john@example.com userRoleResource.query({ email: vm.userData.email }, function (data) { vm.userData.accessLevel = data.AccessLevel; }); 该请求起作用,并返回一个具有AccessLevel属性的用

我正在尝试查询我在本地托管的REST API,其工作原理如下:

http://localhost:51608/api/UserRole?email=john@example.com
userRoleResource.query({ email: vm.userData.email },
   function (data) {
      vm.userData.accessLevel = data.AccessLevel;
});
该请求起作用,并返回一个具有AccessLevel属性的用户对象。现在我有一个angular应用程序,希望使用angular资源查询该URL。我有如下内容,但URL没有被正确构建

(function () {
    "use strict";

    angular
        .module("common.services")
        .factory("userRoleResource",
                ["$resource",
                 "appSettings",
                    userRoleResource])

    function userRoleResource($resource, appSettings) {
        return $resource(appSettings.serverPath + "/api/UserRole:email", { email: '@email'});
    }
})();
我对上述问题的质疑如下:

http://localhost:51608/api/UserRole?email=john@example.com
userRoleResource.query({ email: vm.userData.email },
   function (data) {
      vm.userData.accessLevel = data.AccessLevel;
});
但这会生成如下请求:

http://localhost:51608/api/UserRole?email=john@example.com
userRoleResource.query({ email: vm.userData.email },
   function (data) {
      vm.userData.accessLevel = data.AccessLevel;
});
而不是


这里怎么了

根据
$resource
当前工作,它确实将
:email
替换为您提供给
$resource
对象的email参数。您可以在像
%3A

function userRoleResource($resource, appSettings) {
    return $resource(appSettings.serverPath + "/api/UserRole%3A:email", { email: '@email'});
}

为什么不将字符串格式化为:

return $resource(appSettings.serverPath + "/api/UserRole?email:" + email});

函数userRoleResource($resource,appSettings){return$resource(appSettings.serverPath+“/api/UserRole?email=:email”,{email:'@email'});}每次调用该方法时,您是否考虑创建
$resource
对象?我认为那不是一个好主意。。