BlogAPI é uma API RESTful segura para uma plataforma de blog construída com Spring Boot. Ela oferece recursos como autenticação e autorização de usuários usando JWT, controle de acesso baseado em papéis, e gerenciamento de posts, categorias, tags, comentários, álbuns, fotos e tarefas (todos).
- Registro e login de usuários com autenticação JWT
- Controle de acesso baseado em papéis (USER, ADMIN)
- Operações CRUD para posts de blog com paginação e filtragem por categoria e tag
- Gerenciamento de categorias, tags, comentários, álbuns, fotos e tarefas
- Integração com banco de dados MySQL usando Flyway para migrações
- Validação e tratamento de erros
- Armazenamento seguro de senhas com criptografia
- Java 21
- Maven 3.6+
- Servidor MySQL rodando localmente ou acessível remotamente
- Utiliza tokens JWT para autenticação sem estado
- Senhas armazenadas de forma segura com hash
- Controle de acesso baseado em papéis para restringir endpoints
- Java 21
- Spring Boot 3.4.4
- Spring Security com JWT
- Spring Data JPA com Hibernate
- MySQL
- Flyway para migrações de banco de dados
- Maven para gerenciamento de dependências e build
- ModelMapper para mapeamento DTO
- Lombok para redução de código boilerplate
-
Clone o repositório:
git clone <url-do-repositorio> cd blogapi
-
Configure a conexão com o banco de dados no arquivo
src/main/resources/application.yml:spring: datasource: url: jdbc:mysql://localhost:3306/blogapi username: root password: sua_senha driver-class-name: com.mysql.cj.jdbc.Driver
-
Certifique-se que o servidor MySQL está rodando e crie o banco de dados
blogapicaso não exista:CREATE DATABASE blogapi;
-
A aplicação usa Flyway para executar automaticamente as migrações do banco de dados na inicialização.
-
O segredo JWT e o tempo de expiração podem ser configurados no
application.ymlna seçãoapp:app: jwtSecret: "sua_chave_secreta_jwt" jwtExpirationInMs: 3600000
-
Ajuste outras configurações como porta do servidor ou logging conforme necessário.
Flyway está configurado para gerenciar as migrações do esquema do banco de dados. Os scripts de migração estão localizados em src/main/resources/migration_db. Ao iniciar a aplicação, o Flyway aplicará as migrações pendentes no banco MySQL configurado.
Compile e execute a aplicação usando Maven:
./mvnw clean install
./mvnw spring-boot:runA API estará disponível em http://localhost:8080.
POST /api/auth/signin- Autentica usuário e retorna token JWTPOST /api/auth/signup- Registra um novo usuário
GET /api/post- Lista todos os posts com paginaçãoGET /api/post/category/{id}- Lista posts por categoria com paginaçãoGET /api/post/tag/{id}- Lista posts por tag com paginaçãoGET /api/post/{id}- Obtém um post pelo IDPOST /api/post- Cria um novo post (requer papel USER)PUT /api/post/{id}- Atualiza um post (requer papel USER ou ADMIN)DELETE /api/post/{id}- Deleta um post (requer papel USER ou ADMIN)
A API também suporta gerenciamento de categorias, tags, comentários, álbuns, fotos e tarefas através dos respectivos endpoints (consulte os controladores no código-fonte para detalhes).
{
"firstName": "Leanne",
"lastName": "Graham",
"username": "leanne",
"password": "password",
"email": "leanne.graham@gmail.com"
}{
"usernameOrEmail": "leanne",
"password": "password"
}{
"title": "Titulo do Seu post",
"body": "Decrição do seu post",
}{
"title": "POST ATUALIZADO",
"body": "Conteúdo atualizado do post."
}{
"body": "Comentário de exemplo para o post."
}{
"title": "Meu Álbum"
}{
"title": "Foto Exemplo",
"url": "https://via.placeholder.com/600/92c952",
"thumbnailUrl": "https://via.placeholder.com/150/92c952",
"albumId": 2
}{
"title": "Tarefa Exemplo",
"completed": false
}Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para detalhes.
Para dúvidas ou suporte, entre em contato com o mantenedor do projeto..