|
1 | | -<h1 align="center"> Spring Boot API </h1> |
2 | | - |
3 | | -[](#table-of-contents) |
4 | | - |
5 | | -## Descrição |
6 | | -Este projeto é uma API de autenticação desenvolvida com **Spring Boot** e **Spring Security**, utilizando **MariaDB** como banco de dados. A API fornece funcionalidades de **registro** e **login** de usuários e será consumida por um frontend desenvolvido em outro framework. |
7 | | - |
8 | | -## Tecnologias Utilizadas |
9 | | -- **Java 17** |
10 | | -- **Spring Boot 3** |
11 | | -- **Spring Security** |
12 | | -- **Spring Data JPA** |
13 | | -- **MariaDB** |
14 | | -- **JWT (JSON Web Token)** |
15 | | -- **Maven** |
16 | | - |
17 | | -## Requisitos |
18 | | -Antes de rodar o projeto, certifique-se de ter instalado: |
19 | | -- **Java 17** ou superior |
20 | | -- **MariaDB** instalado e rodando |
21 | | -- **Maven** configurado |
22 | | - |
23 | | -## Configuração do Banco de Dados |
24 | | -O projeto está configurado para utilizar **MariaDB**. Para configurá-lo, crie um banco de dados e edite o arquivo `application.properties`: |
25 | | - |
26 | | -```properties |
27 | | -spring.datasource.url=jdbc:mariadb://localhost:3306/seu_banco_de_dados |
28 | | -spring.datasource.username=seu_usuario |
29 | | -spring.datasource.password=sua_senha |
30 | | -spring.datasource.driver-class-name=org.mariadb.jdbc.Driver |
31 | | -spring.jpa.database-platform=org.hibernate.dialect.MariaDBDialect |
32 | | -``` |
33 | | - |
34 | | -## Como Rodar o Projeto |
35 | | -1. Clone o repositório: |
36 | | - ```sh |
37 | | - git clone https://github.com/VavaHelper/Vava-API.git |
38 | | - ``` |
39 | | -2. Acesse o diretório do projeto: |
40 | | - ```sh |
41 | | - cd Vava-API |
42 | | - ``` |
43 | | -3. Compile e execute o projeto: |
44 | | - ```sh |
45 | | - mvn spring-boot:run |
| 1 | +<main align="center"> |
| 2 | + <h1 align="center"> Spring Boot API </h1> |
| 3 | +</main> |
| 4 | + |
| 5 | +[](#table-of-contents) |
| 6 | + |
| 7 | +## 📑 Índice |
| 8 | +1. [Descrição](#descrição) |
| 9 | +2. [Tecnologias](#tecnologias) |
| 10 | +3. [Requisitos](#requisitos) |
| 11 | +4. [Configuração do Banco de Dados](#configuração-do-banco-de-dados) |
| 12 | +5. [Como Rodar](#como-rodar) |
| 13 | + - [Ambiente Padrão](#ambiente-padrão) |
| 14 | + - [Branch de Desenvolvimento](#branch-de-desenvolvimento) |
| 15 | +6. [Endpoints](#endpoints) |
| 16 | +7. [Fluxo de Autenticação](#fluxo-de-autenticação) |
| 17 | +8. [Futuras Implementações](#futuras-implementações) |
| 18 | +9. [Documentação Útil](#documentação-útil) |
| 19 | +10. [Licença](#licença) |
| 20 | + |
| 21 | +--- |
| 22 | + |
| 23 | +## 📋 Descrição |
| 24 | +Esta API de **autenticação** foi desenvolvida com **Spring Boot** e **Spring Security**, utilizando **PostgreSQL** como banco de dados. |
| 25 | +Ela oferece endpoints para **registro** e **login** de usuários, retornando um JWT (JSON Web Token) para acesso seguro, consumível por um frontend separado. |
| 26 | + |
| 27 | +--- |
| 28 | + |
| 29 | +## 🛠 Tecnologias |
| 30 | + |
| 31 | +| Camada | Tecnologias | |
| 32 | +|-----------------|---------------------------------------------| |
| 33 | +| Linguagem | Java 17 | |
| 34 | +| Framework | Spring Boot 3, Spring Security, JPA | |
| 35 | +| Banco de Dados | PostgreSQL | |
| 36 | +| Autenticação | JWT (JSON Web Token) | |
| 37 | +| Build & Dep. | Maven | |
| 38 | + |
| 39 | +--- |
| 40 | + |
| 41 | +## ✅ Requisitos |
| 42 | +- **Java 17** ou superior |
| 43 | +- **PostgreSQL** instalado e em execução |
| 44 | +- **Maven** (3.6+) |
| 45 | + |
| 46 | +--- |
| 47 | + |
| 48 | +## 🗄️ Configuração do Banco de Dados |
| 49 | +1. Crie um banco no PostgreSQL: |
| 50 | + ```sql |
| 51 | + CREATE DATABASE vava_api; |
46 | 52 | ``` |
47 | 53 |
|
48 | | -## Como Rodar o Projeto (DSV) |
49 | | -1. Clone o repositório: |
50 | | - ```sh |
51 | | - git clone https://github.com/VavaHelper/Vava-API.git |
52 | | - ``` |
53 | | -2. Acesse o diretório do projeto: |
54 | | - ```sh |
55 | | - cd Vava-API |
56 | | - ``` |
57 | | -3. Acesse a branch DSV: |
58 | | - ```sh |
59 | | - git checkout development |
60 | | - ``` |
61 | | -4. Compile e execute o projeto: |
62 | | - ```sh |
63 | | - mvn spring-boot:run |
| 54 | +2. Atualize `src/main/resources/application.properties`: |
| 55 | + |
| 56 | + ```properties |
| 57 | + spring.datasource.url=jdbc:postgresql://localhost:5432/vava_api |
| 58 | + spring.datasource.username=seu_usuario |
| 59 | + spring.datasource.password=sua_senha |
| 60 | + |
| 61 | + spring.jpa.hibernate.ddl-auto=update |
| 62 | + spring.jpa.show-sql=true |
| 63 | + spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect |
64 | 64 | ``` |
65 | 65 |
|
66 | | -## Endpoints Disponíveis |
67 | | -A API oferece os seguintes endpoints: |
68 | | - |
69 | | -### Registro de Usuário |
70 | | -- **POST** `/api/auth/register` |
71 | | -- **Request Body:** |
72 | | - ```json |
73 | | - { |
74 | | - "username": "exemplo", |
75 | | - |
76 | | - "password": "senha123" |
77 | | - } |
78 | | - ``` |
79 | | - |
80 | | -### Login de Usuário |
81 | | -- **POST** `/api/auth/login` |
82 | | -- **Request Body:** |
83 | | - ```json |
84 | | - { |
85 | | - |
86 | | - "password": "senha123" |
87 | | - } |
88 | | - ``` |
89 | | -- **Resposta (sucesso):** |
90 | | - ```json |
91 | | - { |
92 | | - "token": "jwt_token_aqui" |
93 | | - } |
94 | | - ``` |
95 | | - |
96 | | -## Futuras Implementações |
97 | | -- Recuperação de senha |
98 | | -- Perfis de usuários (Admin, Usuário Comum) |
99 | | -- Integração com OAuth2 |
100 | | -- Atendimento/Suporte ao Usuário Cliente |
101 | | - |
102 | | - |
103 | | -## 📚 Documentações importantes |
104 | | -Caso esteja com dúvidas, verifique algumas das documentações abaixo, podem ser úteis: |
105 | | -- [Conventional Commits](https://www.conventionalcommits.org/pt-br/v1.0.0/) - Saiba como padronizar seus commits do GitHub, isso será muito importante para a organização do projeto; |
106 | | -- [Java Spring Boot](https://spring.io/projects/spring-boot) - Framework para criação de aplicações Java, facilitando a configuração e o desenvolvimento; |
107 | | -- [Spring Security](https://spring.io/projects/spring-security) - Framework para autenticação e controle de acesso em aplicações Spring Boot; |
108 | | -- [Java - Sintaxe](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html) - Guia oficial da Oracle sobre a sintaxe básica da linguagem Java; |
109 | | -- [Design Patterns em Java](https://refactoring.guru/design-patterns/java) - Padrões de projeto explicados com exemplos práticos em Java. |
110 | | - |
111 | | -Se tiver dúvidas sobre como iniciar ou progredir, converse com o resto da equipe! |
112 | | - |
113 | | -## Licença |
114 | | -Este projeto está sob a licença MIT. Sinta-se à vontade para utilizá-lo e modificá-lo. |
| 66 | +--- |
| 67 | + |
| 68 | +## ▶️ Como Rodar |
| 69 | + |
| 70 | +### Ambiente Padrão (main) |
| 71 | + |
| 72 | +```bash |
| 73 | +git clone https://github.com/VavaHelper/Vava-API.git |
| 74 | +cd Vava-API |
| 75 | +mvn clean install |
| 76 | +mvn spring-boot:run |
| 77 | +``` |
| 78 | + |
| 79 | +### Branch de Desenvolvimento (DSV) |
| 80 | + |
| 81 | +```bash |
| 82 | +git clone https://github.com/VavaHelper/Vava-API.git |
| 83 | +cd Vava-API |
| 84 | +git checkout development |
| 85 | +mvn clean install |
| 86 | +mvn spring-boot:run |
| 87 | +``` |
| 88 | + |
| 89 | +--- |
| 90 | + |
| 91 | +## 🛣️ Endpoints Disponíveis |
| 92 | + |
| 93 | +| Método | Rota | Descrição | |
| 94 | +| -----: | -------------------- | ------------------------------ | |
| 95 | +| POST | `/api/auth/register` | Registrar novo usuário | |
| 96 | +| POST | `/api/auth/login` | Autenticar usuário e gerar JWT | |
| 97 | + |
| 98 | +<details> |
| 99 | +<summary>▶️ Exemplo de Payload de Registro</summary> |
| 100 | + |
| 101 | +```json |
| 102 | +{ |
| 103 | + "username": "exemplo", |
| 104 | + |
| 105 | + "password": "senha123" |
| 106 | +} |
| 107 | +``` |
| 108 | + |
| 109 | +</details> |
| 110 | + |
| 111 | +<details> |
| 112 | +<summary>▶️ Exemplo de Payload de Login</summary> |
| 113 | + |
| 114 | +```json |
| 115 | +{ |
| 116 | + |
| 117 | + "password": "senha123" |
| 118 | +} |
| 119 | +``` |
| 120 | + |
| 121 | +**Resposta (sucesso):** |
| 122 | + |
| 123 | +```json |
| 124 | +{ |
| 125 | + "token": "eyJhbGciOiJIUzI1NiIsInR5..." |
| 126 | +} |
| 127 | +``` |
| 128 | + |
| 129 | +</details> |
| 130 | + |
| 131 | +--- |
| 132 | + |
| 133 | +## 🔄 Fluxo de Autenticação |
| 134 | + |
| 135 | +```mermaid |
| 136 | +flowchart LR |
| 137 | + A[Cliente envia credenciais] --> B{É novo usuário?} |
| 138 | + B -- Sim --> C[POST /api/auth/register] |
| 139 | + B -- Não --> D[POST /api/auth/login] |
| 140 | + D --> E{Credenciais válidas?} |
| 141 | + C --> F[Usuário criado no DB] |
| 142 | + F --> D |
| 143 | + E -- Sim --> G[Gerar JWT e retornar 200 OK] |
| 144 | + E -- Não --> H[Retornar 401 Unauthorized] |
| 145 | + G --> I[Cliente armazena token] |
| 146 | + I --> J[Requisições subsequentes com Authorization: Bearer <token>] |
| 147 | +``` |
| 148 | + |
| 149 | +--- |
| 150 | + |
| 151 | +## 🚀 Futuras Implementações |
| 152 | + |
| 153 | +* 🔄 Recuperação de senha |
| 154 | +* 👥 Perfis de usuário (Admin, Comum) |
| 155 | +* 🔐 OAuth2 (Google, Facebook) |
| 156 | +* 💬 Sistema de suporte ao cliente |
| 157 | + |
| 158 | +--- |
| 159 | + |
| 160 | +## 📚 Documentação Útil |
| 161 | + |
| 162 | +| Tópico | Link | |
| 163 | +| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | |
| 164 | +| Conventional Commits | [https://www.conventionalcommits.org/pt-br/v1.0.0/](https://www.conventionalcommits.org/pt-br/v1.0.0/) | |
| 165 | +| Spring Boot | [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot) | |
| 166 | +| Spring Security | [https://spring.io/projects/spring-security](https://spring.io/projects/spring-security) | |
| 167 | +| Hibernate & JPA | [https://docs.spring.io/spring-data/jpa/docs/current/reference/html/](https://docs.spring.io/spring-data/jpa/docs/current/reference/html/) | |
| 168 | +| Design Patterns em Java | [https://refactoring.guru/design-patterns/java](https://refactoring.guru/design-patterns/java) | |
| 169 | + |
| 170 | +--- |
115 | 171 |
|
| 172 | +## 📝 Licença |
116 | 173 |
|
| 174 | +Este projeto está licenciado sob a **MIT License**. Veja o arquivo [LICENSE](LICENSE) para mais detalhes. |
0 commit comments