- Aplicado na Controller para garantir apenas uma instância.
- Camadas Controller, e Model(Usando como DTO)
- Aplicada para consumir a API de terceiros.
- Responsável pelas regras de negócios, antes de devolver uma resposta para o client.
- Para libs extras, como GerarLog, e ClientSock, que consome a API de terceiros via REST
Estes padrões(Repository e Services) ajudam a desacoplar a lógica da camada Model da aplicação. Com a aplicação da Repository e Services, a Model passa a ser uma DTO apenas, ou Entity, como preferir.
- Utilizado o Horser, escutando na porta 9000.
- Aplicado paralelismo ao Horse, para liberar o terminar, assim, pode ser encerrada a API, ao pressionar qualquer tecla do terminal.
- Controller > Services > Repository > Model.
Aplicado Generics, para que o Socket consiga retornar qualquer classe, assim, evitando escrita excessiva para cada Model. Este feito acontece com a junção à classe Repository.
Na classe repository, o fluxo de comunicação com as APIs externas, onde, ao falhar a primeira API, buscará a segunda, caso falhe, buscará a terceira.
Nas camadas Repository e Services foram utilizadas interfaces, assim ganhando com o garbage collector e apoio ao Generics.
http://localhost:9000/BuscarCep/{cep}
Exemplo: http://localhost:9000/BuscarCep/12929-602
Aplicação de testes unitários.
Utilizado o Dunit, e montando os seguintes cenarios:
- Os erros são em cenários controlados e esperados.
Os testes se dividiram em dois critérios,
- O REST chama a API, via rota, e passa os parâmetros necessários.
- Necessário estar executando a API.
- Via Services, isolado a camada da API, e chamado o método pela Service.
Para o Client, foi utilizado:
-
- Cuidando somente do que é visual ao usuário.
-
- criando a rota.
-
- Aqui, como é o padrão MVC apenas, ficou com a lógica.
- utilizado para transferência de dados, para o objeto sendo apoio para model, e renderizando na view.
Foi reaproveitado os códigos da API, da camada Model. Pois cada API Externa tem sua própria model. Para renderizar estas Model na view, foi unificada em uma única Model. Mediante um parse realizado pela model.
Foi Reaproveitado a Modules da Api, para gerar logs.
View > Controller > Model > Dto;
- Abrir o executável, APICep.exe. Que se encontra em:.\TOTVS-CEP\API\Bin\Exe Após ter iniciado a API,
- Abrir o Buscador de CEP que se comunicará com a API. Este Buscador de CEP se encontra em: TOTVS-CEP\Client\Bin\Exe
Com ambos Executáveis abertos, estamos aptos a utilizar nosso programa.
Basta informar um CEP e clicar no botão de pesquisar, à frente do CEP. Caso o CEP seja valido, trará as demais informações, como Logradouro, Bairro, Cidade e UF