Según el siguiente ejemplo, ¿cómo puedo configurar el $resource
tiempo de espera y encabezados a nivel mundial? Tengo varias $resource
definiciones como las siguientes, pero preferiría no repetir la configuración básica para cada una.
angular
.module("myApp.services")
.factory("myServices", myServices);
myServices.$inject = ["$resource"];
function myServices($resource) {
return {
serviceA: $resource("/api/serviceA", {
serviceA_paramA: "@serviceA_valueA",
serviceA_paramB: "@serviceA_valueB"
}, {
"get": {
method: "GET",
timeout: 120000
}
}, {
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
}
}),
serviceB: $resource("/api/serviceB", {
serviceB_paramA: "@serviceB_valueA",
serviceB_paramB: "@serviceB_valueB"
}, {
"get": {
method: "GET",
timeout: 120000
}
}, {
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
}
})
};
}
Respuestas
2 para la respuesta № 1Defina su objeto de configuración como una constante, luego puede inyectarlo en cada servicio que lo necesite y sobrescribir cualquier propiedad que sea específica de ese servicio.
//Constant
angular.module("myApp")
.constant("serviceConfigObject",
{
"get": {
method: "GET",
timeout: 120000
}
}, {
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
}
})
// Service
angular
.module("myApp.services")
.factory("myServices", myServices);
myServices.$inject = ["$resource", "serviceConfigObject"];
function myServices($resource, serviceConfigObject) {
return {
serviceA: $resource("/api/serviceA", {
serviceA_paramA: "@serviceA_valueA",
serviceA_paramB: "@serviceA_valueB"
}, serviceConfigObject),
serviceB: $resource("/api/serviceB", {
serviceB_paramA: "@serviceB_valueA",
serviceB_paramB: "@serviceB_valueB"
}, serviceConfigObject)
};
}
0 para la respuesta № 2
Puede tener un proveedor bajo .config()
, .value()
o .constant()
módulo. Refiérase a esta útil Gist que explica y proporciona un código de muestra para todos los diferentes proveedores.
Por simplicidad, este es el ejemplo .constant ():
angular
.module("myApp.constants")
.constant("AppConstants", {
"timeout" : 120000,
"method" : "GET",
....
// define your kv structure here
})
Entonces ahora puede inyectarlo en la función de su módulo. Espero que esto ayude.