내 API에 요청을 보내고 AngularJS $ resource 모듈을 사용하고 있습니다. $ http와 다르기 때문에 오류를 처리하는 방법을 모르겠습니다.
내 서비스 :
var appServices = angular.module('app.services', ['ngResource']);
appServices.factory('Category', ['$resource',
function($resource){
return $resource('/apicategoryerr/?format=:format', {}, {
query: {
method: 'GET',
params: { format: 'json'},
isArray: true,
}
});
}]);
내 컨트롤러 :
...
Category.query(function(data) {
console.log(data);
});
...
나는 이것과 같은 것을 원한다 .. 내 API가 작동하지 않으면 오류를 처리하는 방법을 모르겠다 ..
Category.query().success(function() {
console.log('success');
}).error(function() {
console.log('error');
});
답변
오류 핸들러를 두 번째 매개 변수로 query
.
Category.query(function(data) {}, function() {});
편집하다:
좀 더 명확하게하기 위해 몇 가지 예를 들면 다음과 같습니다.
var Resource = $resource('/restapi/resource');
Resource.query(function(data) {
// success handler
}, function(error) {
// error handler
});
Resource.query({
'query': 'thequery'
},function(data) {
// success handler
}, function(error) {
// error handler
});
Resource.query().$promise.then(function(data) {
// success handler
}, function(error) {
// error handler
});
Resource.query({
'query': 'thequery'
}).$promise.then(function(data) {
// success handler
}, function(error) {
// error handler
});
답변
오류 함수에 연결된 속성 interceptor
과 함께 메서드 설명에 개체를 추가하여 리소스 생성 단계에서 오류 처리기를 정의 할 수 있습니다 responseError
.
function resourceErrorHandler(response) { ... }
$resource('/path/:param/', {} ,
{
'get': {method:'GET',
interceptor : {responseError : resourceErrorHandler}},
'save': {method:'POST'},
'query': {method:'GET', isArray:true,
interceptor : {responseError : resourceErrorHandler}},
'remove': {method:'DELETE'},
'delete': {method:'DELETE'}
};
resourceErrorHandler
get 또는 query 메서드의 각 오류에 대해 호출되는 함수는 어디에 있습니까 ? 요청 된 문제에 대해 get 메소드 만 필요합니다. 물론 모든 작업에 적용 할 수 있습니다.
response
$ resource가 정상적인 응답을 포착하기위한 다른 인터셉터 가 있습니다.
{'get': {method:'GET', interceptor : {response : resourceResponseHandler}},
답변
다음은 내 ng.resource에 대한 새로운 ES6 예제 (TypeScript 사용)입니다.
resolve: {
detail: function (myService, $stateParams) {
return myService.getEventDetail({ id: $stateParams.id }).$promise.then(data => data, error => false );
}
}
그런 다음 컨트롤러에서 컨트롤러에 주입 된 ‘세부 사항’은 데이터 (양호)로 확인되거나 오류에 대해 거짓으로 확인되며 여기서 404 표시를 처리합니다.