Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

💳 💵 API desenvolvida para estudar SpringBoot

Notifications You must be signed in to change notification settings

Clayder/finance-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

69 Commits

Repository files navigation

🤜🤛 Objetivo

O projeto está sendo desenvolvido utilizando como base o curso Spring Boot, Hibernate, REST, Ionic, JWT, S3, MySQL, MongoDB (https://www.udemy.com/course/spring-boot-ionic/ ). Esse é um excelente curso, indicado para quem está começando a aprender e também para quem já tem conhecimentos em Spring Boot.

Dica: No decorrer do curso o professor desenvolve uma API para delivery, como eu já possuo conhecimentos básicos em Spring Boot, achei melhor não reproduzir o mesmo sistema, ou seja, enquanto o professor desenvolvia a API para sistema de pedidos online eu desenvolvi uma API para realizar o gerenciamento de cartão de crédito e faturas, com isso, o meu aprendizado foi muito melhor.

Esse é um projeto apenas para estudo que vai permanecer em constante desenvolvimento, o objetivo principal é obter mais conhecimentos em:

  • ✔️ Spring Boot
  • ✔️ Docker
  • ✔️ API Rest
  • ✔️ Swagger
  • ✔️ Postman
  • ✔️ MySQL
  • ✔️ Hibernate
  • ✔️ Git
  • ✔️ JWT - JSON Web Tokens
  • ✔️ Spring Security
  • ✔️ Java
  • ✖️ TDD
  • ✖️ RabbitMQ
  • ✖️ Jenkins

⬇️ Instalação do projeto

  1. Instalar e configurar o java 8 .
  2. Instalar e configurar o MySql.
  3. Clonar esse repositório: git clone git@github.com:Clayder/finance-API.git
  4. Acessar a pasta do projeto e executar o Maven
  5. Configurar o arquivo src/main/resources/application.properties inserindo os dados do banco de dados.
  6. Executar o Spring App
  7. Realizar as configurações abaixo do Postman

Utilização do banco de dados via docker

  1. Instalar o docker: https://www.digitalocean.com/community/tutorials/como-instalar-e-usar-o-docker-no-ubuntu-18-04-pt
  2. Instalar o docker compose: https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-ubuntu-18-04-pt
  3. Acessar o projeto via terminal
  4. Executar: docker-compose up db

🌐 Consumo da API via Postman

Como importar projetos no Postman ? Clique aqui !!

Para consumir a API utilizando o Postman, importar os arquivos abaixo:

  1. Cartão de crédito https://raw.githubusercontent.com/Clayder/finance-API/master/public/postman/Cart%C3%A3o%20de%20cr%C3%A9dito.postman_collection.json

  2. Faturas https://raw.githubusercontent.com/Clayder/finance-API/master/public/postman/Faturas.postman_collection.json

  3. Usuários https://raw.githubusercontent.com/Clayder/finance-API/master/public/postman/Usu%C3%A1rios.postman_collection.json

  4. Variáveis de ambiente https://raw.githubusercontent.com/Clayder/finance-API/master/public/postman/Desenvolvimento.postman_environment.json

📂 Estrutura do projeto

Camadas

  1. Resources: Controladores rests.

  2. Services: Camada que realiza a integração com o Repository, ou seja, essa camada implementa a interface Repository.

  3. Repositories: Interface de comunicação para o acesso aos dados.

  4. Domain: Onde fica armazenado os dados da tabela da classe.

  5. DTO: Camada responsável por manipular o JSON que será exibido no response.

Sub-camadas

  1. Resource/Exception:

    1.1. classe ResourceExceptionHandler: Tem a função de interceptar e tratar as exceções lançadas nos resources (controllers). Essa classe possui uma annotation chamada @ControllerAdvice, ele que intercepta as exceções geradas por métodos anotados com @RequestMapping. Mais informações:https://medium.com/@jovannypcg/understanding-springs-controlleradvice-cd96a364033f

  2. Services/Exception: Possui as classes que criam exceções personalizadas.

🗒️ Documentação da API

A documentação da API foi feita utilizando o Swagger e toda essa geração de documentação foi feita utilizando a biblioteca SpringFox. Os links abaixo possuem excelentes explicações de como utilizar essa biblioteca com Spring Boot.

  1. Site oficial da biblioteca: http://springfox.github.io/springfox/

  2. Tutorial: https://www.treinaweb.com.br/blog/documentando-uma-api-spring-boot-com-o-swagger/

  3. Exemplos de utilização:

    3.1. https://github.com/springfox/springfox/tree/master/springfox-petstore/src/main/java/springfox/petstore

    3.2. https://github.com/springfox/springfox

Para acessar a documentação do projeto é só inicializar o servidor e acessar http://localhost:8080/swagger-ui.html#/

🔐 JSON Web Tokens

A segurança do projeto foi feito utilizando o Spring Security, através dessa biblioteca é possível gerar o JWT, para realizar a autenticação na API.

O que é JWT: https://medium.com/tableless/entendendo-tokens-jwt-json-web-token-413c6d1397f6

Para realizar a geração do JWT, tem que ser feita uma requisição POST http://localhost:8080/login , passando o login e senha do usuário.

{
 "email": "admin@gmail.com",
 "password": "12345678"
}

Se ocorrer tudo ok, a API vai retornar status code 200 e com o JWT no header (Authorization) do response .

É necessário passar o Authorization em todos os outros endpoints da API (menos no POST /login)

Através do site https://jwt.io/ é possível entender melhor o conteúdo desse token JWT e até mesmo visualizar o seu tempo de expiração (exp) no PAYLOAD:DATA.

About

💳 💵 API desenvolvida para estudar SpringBoot

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /