https://github.com/jonathanmdr/survival-api
API de gestão de crédito.
https://github.com/jonathanmdr/survival-api
Last synced: 5 months ago
JSON representation
API de gestão de crédito.
- Host: GitHub
- URL: https://github.com/jonathanmdr/survival-api
- Owner: jonathanmdr
- Created: 2020-01-17T03:53:38.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-08-26T17:31:04.000Z (almost 2 years ago)
- Last Synced: 2025-10-11T12:32:32.509Z (9 months ago)
- Language: Java
- Size: 2.48 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Survival-api
API de gestão de crédito.
A API tem como objetivo disponibilizar os dados armazenados em tempo real à seus consumidores com segurança e assertividade.
## Travis CI
|Branch|Status
|--|--|
|master|[](https://travis-ci.org/jonathanmdr/Survival-api)
## Tecnologias utilizadas
[](https://www.java.com/pt_BR/download/)
[](https://maven.apache.org/download.cgi)
[](https://projectlombok.org/)
[](https://www.postgresql.org/download/)
[](https://spring.io/)
[](http://modelmapper.org/)
[](https://swagger.io/)
[](https://oauth.net/2/)
[](https://jwt.io/)
[](https://flywaydb.org/)
## Arquitetura cloud
Para disponibilizar a API em cloud pensando em alta disponibilidade, escalabilidade e segurança optei pela AWS, tendo como base o tráfego de dados sensíveis entre a API e seus consumidores.
- VPC: Virtual Private Cloud
- RDS: Relational Database Service
- EC2: Elastic Compute Cloud
A arquitetura é composta de uma VPC juntamente com uma sub-rede privada e uma sub-rede pública, onde na sub-rede privada temos a nossa base de dados postgreSql em um RDS e na sub-rede pública temos os serviços da nossa API em um EC2.
A nossa base de dados e a nossa API estão dentro do mesmo grupo de segurança, o que nos garante que a comunicação entre ambas ocorra de forma isolada e limitada ao grupo que as mesmas pertencem.
## Cenário da arquitetura
[](https://github.com/jonathanmdr/Survival-api/blob/master/images)
## Serviços que a API dispõe
A API dispõe de 3 (três) serviços únicos (Débitos, Score e Eventos).
|Serviço|URL|Retorno|Documentação
|--|--|--|--|
|Débitos|http://localhost:8095/serviceA/{cpf}|Retorna os dados da pessoa referente ao CPF informado juntamente com uma listagem de débitos registrados para o mesmo.|http://localhost:8095/swagger-ui.html#/Débitos
|Score|http://localhost:8095/serviceB/{cpf}|Retorna os dados da pessoa referente ao CPF informado juntamente com uma listagem de bens e fontes de renda.|http://localhost:8095/swagger-ui.html#/Score
|Eventos|http://localhost:8095/serviceC/{cpf}|Retorna os dados referente aos eventos registrados para o CPF informado|http://localhost:8095/swagger-ui.html#/Eventos
A documentação possui toda a informação referente ao serviço, como por exemplo dados de entrada esperados e o objeto de retorno.
## Configuração do projeto
> Atenção: para executar a aplicação é necessário ter a base de dados postgreSql devidamente criada e configurada.
1. Criando a base de dados:
- Caso a base de dados seja criada com nome diferente, servidor remoto ou o serviço esteja executando em uma porta diferente da padrão (5432), siga as instruções sobre o arquivo de propriedades.
```
CREATE DATABASE survivalapi
WITH
OWNER = postgres
ENCODING = 'UTF8'
CONNECTION LIMIT = -1;
```
2. Entendendo o arquivo de propriedades de configuração do projeto (`application.properties`):
```
# SERVER
• Porta em que a aplicação estará executando
server.port=8095
# CONNECTION DATABASE
• URL de conexão com a base de dados jdbc:postgresql://{HOST}:{PORT_NUMBER}/{DATABASE_NAME}
spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/survivalapi
• Usuário de conexão com a base de dados (usuário padrão: postgres)
spring.datasource.username=postgres
• Senha de conexão com a base de dados (senha padrão: postgres)
spring.datasource.password=postgres
# SECURITY
• Perfis de configuração de segurança da API (oauth-security e basic-security)
spring.profiles.active=oauth-security
```
3. Entendendo os perfis de segurança da aplicação:
- **oauth-security**: Autentica o usuário na aplicação e verifica suas permissões de acesso para cada recurso da API por meio de tokens (Controla nível de acesso).
- **basic-security**: Autentica o usuário na aplicação (Não controla nível de acesso).
4. Utilizando o perfil `oauth-security`:
- Veja como autenticar o usuário e fazer uma requisição.
[](https://github.com/jonathanmdr/Survival-api/blob/master/images)
5. Utilizando o perfil `basic-security`:
- Veja como autenticar o usuário e fazer uma requisição.
[](https://github.com/jonathanmdr/Survival-api/blob/master/images)
6. Usuários e níveis de acesso aos recursos:
|Usuário|Senha|Permissões de acesso
|--|--|--|
|admin@survival.com|admin|ROLE_PESQUISAR_DEBITO, ROLE_PESQUISAR_SCORE e ROLE_PESQUISAR_EVENTO
|convidado@survival.com|convidado|ROLE_PESQUISAR_DEBITO e ROLE_PESQUISAR_SCORE
## Requisições prontas para utilizar em testes
[Postman - Survival API Documentation](https://documenter.getpostman.com/view/6429490/SWT5jgkj)
## Auditoria
Todos os serviços são auditados a cada requisição gerando um registro na base de dados com informações para análise.