В настоящее время я использую angular-hateoas (https://github.com/jmarquis/angular-hateoas).. Я бы хотел добавить определенные перехватчики в функции query () и get () ресурса, созданного в HateoasInterface. Я искал способы сделать это , но не увенчались успехом.
Я думал, что это можно сделать, добавив это так:
var someResource = someService.resource('someresource');
someResource.query.interceptors = {
response: function (data) {
// do something data
return data
},
responseError: function (error) {
// do something with error
return $q.reject(error);
}
};
но это дает мне:
TypeError: Attempted to assign to readonly property.
Мне может понадобиться использовать $ decorator, но у меня нет с этим опыта, и я не видел примеров для добавления определенных перехватчиков к конкретным объектам ресурса.
Я не хочу использовать $httpProvider.interceptors
, так как я не хочу, чтобы перехватчик работал на всех ресурсах.
Единственное, о чем я сейчас могу думать, - это настроить HateoasInterfaceProvider с помощью функций с конкретными именами, которые содержат определенные перехватчики.
angular.module('myModule')
.config(HateoasInterfaceConfig);
HateoasInterfaceConfig.$inject = ['HateoasInterfaceProvider'];
function HateoasInterfaceConfig(HateoasInterfaceProvider) {
HateoasInterfaceProvider.setHttpMethods({
get: {
method: 'GET',
isArray: false
},
getSomeResource: {
method: 'GET',
isArray: false,
interceptors: {
response: someResponseFunc,
responseError: someErrorFunc
}
},
update: {
method: 'POST',
},
query: {
method: 'GET',
isArray: true
}
querySomeResource: {
method: 'GET',
isArray: true,
interceptors: {
response: function(data) {
// do something with data
return data;
},
responseError: function (error) {
//do something with error
return $q.reject(error);
}
}
});
HateoasInterfaceProvider.setLinksKey('_links');
}
но я предпочитаю так не делать.