No Angular 1, utilizávamos uma feature apenas para os 'services' e outra feature apenas para os 'resources', vide exemplos a seguir.
Exemplo de service:
;(function(ng) {
'use strict';
ng.module('my-app')
.service('$servicoPadrao', [
function servicoPadraoFn() {
let self = this;
let urlBase = 'http://whatever/v2/API/Consulta/ServicoConsulta.svc/';
self.gerarURL = function(endpoint) {
return urlBase + endpoint;
};
self.obterHeaders = function(){
var _headers = {
'Content-Type': 'application/json',
'CodigoCliente': 108715,
'Modulo': 'nHYnnmJUbyfdVCrxv==',
'Autorizacao': 'Basic cg97BNnHgTtdTfvjbgDDcGHvgd=='
};
return _headers;
};
return self;
}
]);
}(window.angular));
Exemplo de resource:
;(function(ng) {
'use strict';
ng.module('my-app')
.factory('$dashboardResource', [
'$resource',
'$servicoPadrao',
function($resource, $servicoPadrao) {
const _url = $servicoPadrao.gerarURL(':acao/:id');
const _params = {
id: '@id',
acao: '@acao'
};
const _method = {
consultarTotalVendido: {
method: 'GET',
headers: $servicoPadrao.obterHeaders(),
params: {
acao: 'consultarTotalVendido',
inicioPeriodo: '@inicioPeriodo',
fimPeriodo: '@fimPeriodo'
},
isArray: false,
}
return $resource(_url, _params, _method);
}
]);
}(window.angular));
Com o Angular 2, no arquivo *.ts eu tenho o serviço através do "import { Http }..." conforme foi mostrado na aula, correto?
É um padrão ter services e resources no mesmo arquivo ou seria uma boa prática separá-los conforme fazíamos no Angular 1?
Além disso: - Como fazer para obter no "html.get..." os headers, params, etc, quando dependem de autorização? - Qual seria a melhor forma de ter o mesmo funcionamento acima (ou melhorá-lo)? - Que estrutura de pastas/arquivos seguir p/ otimizar o desempenho e facilitar a manutenção do código?