【发布时间】:2017-11-27 12:14:40
【问题描述】:
我在托管here 的.Net 中创建了一个简单的RESTful 服务。
我正在尝试从我的 angularjs 代码中调用 getByName 操作。但是,angularjs 代码调用默认的 'get' 而不是 'getByName'
AngularJs 代码:
app.factory('UserResourceSvc',function($resource){
var baseApiUrl = "http://publicapitest.azurewebsites.net/";
//var baseApiUrl = "http://localhost:92/"
return $resource( baseApiUrl + 'api/Employee/:id',{id: "@id"},
{
getByName : {method: 'GET', params: {} , isArray: false}
}
);
});
我在按钮点击时调用下面的函数来触发 API 调用。
$scope.getByName = function(){
UserResourceSvc.getByName(function(data){
debugger;
})
}
我收到以下错误消息:
angular.js:14794 Error: [$resource:badcfg] Error in resource configuration for action `getByName`. Expected response to contain an object but got an array (Request: GET http://publicapitest.azurewebsites.net/api/Employee)
http://errors.angularjs.org/1.6.7/$resource/badcfg?p0=getByName&p1=object&p2=array&p3=GET&p4=http%3A%2F%2Fpublicapitest.azurewebsites.net%2Fapi%2FEmployee
at angular.js:116
at $http.then.response.resource (angular-resource.js:757)
at processQueue (angular.js:17145)
at angular.js:17193
at Scope.$digest (angular.js:18331)
at Scope.$apply (angular.js:18628)
at done (angular.js:12619)
at completeRequest (angular.js:12863)
at XMLHttpRequest.requestLoaded (angular.js:12780) "Possibly unhandled rejection: {}"
当我签入 fiddler 时,呼叫将转到 'http://publicapitest.azurewebsites.net/api/Employee' 而不是 'http://publicapitest.azurewebsites.net/api/Employee/getByName'
我错过了什么吗?
【问题讨论】:
-
我已经很久没有使用 $resource(我发现只使用 $http 更容易)但我认为自定义操作仅适用于您从初始调用返回的项目的实例?所以你可以做
UserResourceSvc.get(..),然后每个返回的实例都有一个$getByName可用的函数,所以这可能不是你要找的方法? -
查看文档中的示例:docs.angularjs.org/api/ngResource/service/$resource#examples。 $charge 方法仅适用于从初始 API 调用返回的项目实例。
标签: angularjs asp.net-web-api2 asp.net-web-api-routing angular-resource