我如何 get/catch 从 get API 响应状态代码
How do I get/catch response status code from get API
下面是代码
UserService.api.getProfile({userLogin: $scope.login}, function(res) {
_.each($scope.visibility, function(e) {
e.visible = (_.find(res, { 'roleName': e.name })) ? true : false;
});
});
而对于 userService.api.getProfile 将如下所示
angular.module('frontendApp').factory('UserService', [
'$resource',
function($resource) {
return {
api: $resource('service/authority-roles/:roleId', {}, {
getProfile: {
method: 'GET',
url: 'service/user/:userLogin/authority-roles',
isArray: true
}
如果 API 发送响应 200,它工作正常。但是,当 API returns 响应 404 时,代码无法捕获状态。
我尝试使用“Try”和“Catch”,但没有用。我还在 res.status 上做了 console.log 来获取状态代码,但该值未定义。
计划是,如果 API 返回 400 响应,则警告“未找到用户”消息。
感谢您对此提供的帮助。提前致谢。
假设您没有任何可以处理此问题的全局 $http
拦截器,您可以通过 specifying an interceptor
object 在您的 [=13] 上按每个 api 方法执行此操作=] 动作,像这样:
getProfile: {
method: 'GET',
url: 'service/user/:userLogin/authority-roles',
isArray: true,
interceptor: {
responseError: function(rejection) {
// do something on error
return $q.reject(rejection);
}
}
}
您可以阅读有关拦截器的更多信息here。
下面是代码
UserService.api.getProfile({userLogin: $scope.login}, function(res) {
_.each($scope.visibility, function(e) {
e.visible = (_.find(res, { 'roleName': e.name })) ? true : false;
});
});
而对于 userService.api.getProfile 将如下所示
angular.module('frontendApp').factory('UserService', [
'$resource',
function($resource) {
return {
api: $resource('service/authority-roles/:roleId', {}, {
getProfile: {
method: 'GET',
url: 'service/user/:userLogin/authority-roles',
isArray: true
}
如果 API 发送响应 200,它工作正常。但是,当 API returns 响应 404 时,代码无法捕获状态。
我尝试使用“Try”和“Catch”,但没有用。我还在 res.status 上做了 console.log 来获取状态代码,但该值未定义。
计划是,如果 API 返回 400 响应,则警告“未找到用户”消息。
感谢您对此提供的帮助。提前致谢。
假设您没有任何可以处理此问题的全局 $http
拦截器,您可以通过 specifying an interceptor
object 在您的 [=13] 上按每个 api 方法执行此操作=] 动作,像这样:
getProfile: {
method: 'GET',
url: 'service/user/:userLogin/authority-roles',
isArray: true,
interceptor: {
responseError: function(rejection) {
// do something on error
return $q.reject(rejection);
}
}
}
您可以阅读有关拦截器的更多信息here。