Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/miguelamello/stone-customer-api
Esta API REST tem como objetivo fornecer um serviço de cadastro de clientes, assim como atualização dos dados cadastrais e respectiva consulta dos dados cadastrais do cliente.
https://github.com/miguelamello/stone-customer-api
docker nestjs nodejs redis typescript
Last synced: 28 days ago
JSON representation
Esta API REST tem como objetivo fornecer um serviço de cadastro de clientes, assim como atualização dos dados cadastrais e respectiva consulta dos dados cadastrais do cliente.
- Host: GitHub
- URL: https://github.com/miguelamello/stone-customer-api
- Owner: miguelamello
- Created: 2023-08-09T22:46:49.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-08-17T20:46:19.000Z (over 1 year ago)
- Last Synced: 2023-08-17T21:13:11.731Z (over 1 year ago)
- Topics: docker, nestjs, nodejs, redis, typescript
- Language: TypeScript
- Homepage: http://orionsoft.site/stone-customer-api/v1/reference
- Size: 1.29 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Stone Customer API
## Descrição
Esta API REST tem como objetivo fornecer um serviço de cadastro de clientes, assim como atualização dos dados cadastrais e respectiva consulta dos dados cadastrais. O acesso à API requer autenticação prévia obtida através da própia API. A autenticação é feita através de um Bearer Token, que é um token de acesso que deve ser enviado no cabeçalho HTTP de cada requisição. O Bearer Token é obtido através de um endpoint específico da API, que recebe como parâmetros o `email` do usuário. O Bearer Token tem um tempo de vida limitado de 300 segundos (5 min), e após expirar, o usuário deve solicitar um novo Bearer Token.## Documentação
A documentação da API está disponível em:[http://customerapi.orionsoft.site/reference](http://customerapi.orionsoft.site/reference)
## Implementação
A API foi implementada utilizando a seguinte Stack de tecnologias:- NodeJS
- NestJS
- Typescript
- Redis
- Axios
- Ioredis
- Jest
- Docker
- AWS EC2## Instalação
A instalação da API pode ser facilmente realizada seguindo os passos descritos abaixo. É assumido que seu ambiente local é Linux, BSD, MacOS ou alguma outra variante do Unix. Se você estiver utilizando Windows, pode ser necessário realizar algumas adaptações. Abra um terminal de comando e siga os passos abaixo.Obs: Será necessário ter os seguintes softwares instalados em seu ambiente local: `git` e `nodejs`.
1> Baixar o codigo fonte do repositório:
cd ~ && git clone https://github.com/miguelamello/stone-customer-api.git
2> Instalar as dependências do projeto:
cd stone-customer-api && npm install
3> Configurar as variáveis de ambiente:
A aplicação precisa de algumas poucas variáveis de ambiente para funcionar corretamente. Para isso, basta executar uma única vez, o arquivo `app-config` na raiz do projeto:
./app-config
A tarefa dele é simples, apenas criar um arquivo `.env` na raiz do projeto, e preencher as variáveis de ambiente com valores padrão:
API_PORT=3030
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_TTL=300
SECRET_KEY='3596bece-3609-4292-9ed8-b2881fae4cda'É necessário configurar essas variáveis de ambiente por alguns motivos:
- Não é uma boa prática deixar as configurações de banco de dados, chaves de segurança no código fonte, e outras informações sensíveis, diretamente no código fonte ou em arquivos de configuração que são versionados no repositório.
- A aplicação pode ser executada em diferentes ambientes, como desenvolvimento, homologação e produção, e cada ambiente pode ter suas próprias configurações. Isso ocorre em nosso caso porque a aplicação vai ser executada em um container Docker, mas também pode ser executada diretamente no host, ou em um servidor de aplicação como o AWS ECS, por exemplo.O propósito das variáveis já é bem auto-explicativo, mas segue uma breve descrição de cada uma:
- `API_PORT`: Porta em que a API vai ser executada. O valor padrão é 3030.
- `REDIS_HOST`: Endereço do servidor Redis. O valor padrão é `redis` para execução sob o `Docker`.
- `REDIS_PORT`: Porta do servidor Redis. O valor padrão é 6379.
- `REDIS_TTL`: Tempo de vida dos dados temporários em cache no Redis, em segundos. O valor padrão é 300 segundos (5 minutos).
- `SECRET_KEY`: Chave de segurança utilizada para criar um `hash` do Bearer Token. Você pode usar uma string de qualquer tamanho que desejar.Observações:
1) Para evitar conflitos de porta com alguma instalação de `Redis` rodando no ambiente de teste, torna-se necessário, enquanto realizando os testes no localhost, parar a execução da instância `Redis`, mais somente se ela estiver "escutando" na porta padrão `6379`. Caso a instância esteja executando como um container `Docker`, você deverá remover esse container, visto que a aplicação precisa acessar uma instância `Redis` que esteja no mesmo network do Docker.2) Pode ocorrer também de você ter alguma outra aplicação executando na porta padrão 3030. Nesse caso, você pode alterar a porta padrão da API para uma porta diferente, e alterar a variável `API_PORT` de acordo.
## Execução
A aplicação da API será executada no `Docker`, e para isso, é necessário ter o `Docker` instalado em seu ambiente local. Se você não tiver o `Docker` instalado, siga as instruções de instalação disponíveis em: [https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/).Para executar a aplicação, é necessário configurá-la no `Docker`. Para isso, preparei alguns comandos customizados para facilitar a configuração e execução da aplicação no `Docker`. Assumindo que você esteja com o terminal de commando aberto e na raiz do projeto, execute os commandos abaixo:
./docker-build && ./docker-run && ./docker-logs
O primeiro comando `docker-build` vai criar uma imagem Docker da aplicação.
O segundo comando `docker-run` vai executar a aplicação em um container Docker.
O terceiro comando `docker-logs` vai exibir os logs da aplicação em tempo real.A qualquer momento você pode parar de exibir os logs da aplicação pressionando `CTRL+C`.
Se quiser parar a execução da aplicação no `Docker`, execute o comando `docker-stop`.
Se quiser iniciar novamente a aplicação, execute o comando `docker-run`.
Se quiser ver os logs da aplicação novamente, execute o comando `docker-logs`.## Uso
Com a aplicação rodando no `Docker`, você pode começar a testar a API. Um primeiro passo é verificar se a aplicação está funcionando corretamente. Para isso, abra o navegador e acesse a documentação:`http://localhost:3030/reference`
Utilize a documentação para testar os endpoints da API. Você encontrará exemplos de requisições e respostas para cada endpoint. Recomendo o uso de algum cliente desktop, tal como o `Postman` para interagir com a API.
## Testes
Para executar os testes dos endpoints, execute o comando abaixo, na raiz do projeto:
npm test
Obs: Certifique que a aplicação esteja executando no `Docker` antes de executar os testes.
## Conclusão
A "API de Clientes Stone" é uma API REST baseada em NodeJS, utilizando NestJS e TypeScript. Ela oferece serviços para registro, atualização e consulta de dados de clientes. A autenticação é feita por meio de um Token de Portador com tempo limitado. Documentação e detalhes de implementação estão disponíveis. Redis e Axios são usados, com testes via Jest. A instalação e execução ocorrem via Docker. A API apresenta uma abordagem clara para gerenciar clientes com vários componentes tecnológicos.