Skip to content

eddyoliveiram/blog-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Blog API - Laravel 12 com JWT

API REST completa para um sistema de blog desenvolvida com Laravel 12 e autenticação JWT.

Características

  • ✅ Autenticação JWT (JSON Web Token)
  • ✅ Usuários podem visualizar posts e comentários sem cadastro
  • ✅ Apenas usuários autenticados podem criar, editar e deletar posts e comentários
  • ✅ Relacionamentos completos entre User, Post e Comment
  • ✅ Paginação de resultados
  • ✅ Validação de dados em todos os endpoints
  • ✅ Factories e Seeders para dados de teste
  • ✅ Documentação completa da API

Tecnologias

  • Laravel 12 - Framework PHP
  • JWT Auth - Autenticação via JSON Web Tokens
  • MySQL - Banco de dados (configurado)
  • Eloquent ORM - Mapeamento objeto-relacional

Requisitos

  • PHP 8.2+
  • Composer
  • MySQL 5.7+ ou 8.0+

Instalação

Instalação Rápida com Scripts Automatizados

Windows:

cd blog-api

# 1. Instalar dependências
composer install

# 2. Executar setup completo (cria banco, migrations e seeders)
setup-mysql.bat

Linux/macOS:

cd blog-api

# 1. Instalar dependências
composer install

# 2. Dar permissão de execução ao script
chmod +x setup-mysql.sh

# 3. Executar setup completo
./setup-mysql.sh

Instalação Manual

  1. Clone o repositório e entre na pasta:
cd blog-api
  1. Instale as dependências:
composer install
  1. Configure o arquivo .env:
cp .env.example .env
php artisan key:generate
php artisan jwt:secret
  1. Configure o MySQL no arquivo .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog_api
DB_USERNAME=root
DB_PASSWORD=sua_senha_aqui
  1. Crie o banco de dados:

Opção 1 - Script SQL:

mysql -u root -p < database/setup_mysql.sql

Opção 2 - Manualmente:

mysql -u root -p
CREATE DATABASE blog_api CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EXIT;

Opção 3 - Script Batch (Windows):

create-database.bat
  1. Execute as migrations e seeders:
php artisan migrate --seed
  1. Inicie o servidor:
php artisan serve

A API estará disponível em: http://localhost:8000

Guia Completo de Configuração MySQL

Para instruções detalhadas sobre configuração do MySQL, troubleshooting e configurações avançadas, consulte:

MYSQL_SETUP.md - Guia completo de configuração do MySQL

Credenciais de Teste

Após executar os seeders, você terá acesso a:

Estrutura da API

Rotas Públicas (sem autenticação)

  • GET /api/posts - Listar todos os posts
  • GET /api/posts/{id} - Ver um post específico
  • GET /api/posts/{id}/comments - Ver comentários de um post
  • POST /api/register - Registrar novo usuário
  • POST /api/login - Fazer login

Rotas Protegidas (requer autenticação)

  • POST /api/posts - Criar post
  • PUT /api/posts/{id} - Atualizar post (apenas autor)
  • DELETE /api/posts/{id} - Deletar post (apenas autor)
  • POST /api/posts/{id}/comments - Criar comentário
  • PUT /api/comments/{id} - Atualizar comentário (apenas autor)
  • DELETE /api/comments/{id} - Deletar comentário (apenas autor)
  • GET /api/me - Dados do usuário autenticado
  • POST /api/logout - Fazer logout
  • POST /api/refresh - Atualizar token

Documentação

Testar no Postman

Importe os arquivos no Postman para testar facilmente:

  1. Blog-API.postman_collection.json - Coleção completa com todos os endpoints
  2. Blog-API.postman_environment.json - Variáveis de ambiente

👉 Consulte o GUIA_POSTMAN.md para instruções detalhadas

Exemplo Rápido

# 1. Login
curl -X POST http://localhost:8000/api/login \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"password"}'

# 2. Listar posts (público)
curl http://localhost:8000/api/posts

# 3. Criar post (use o token do login)
curl -X POST http://localhost:8000/api/posts \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer SEU_TOKEN" \
  -d '{"title":"Meu Post","content":"Conteúdo do post"}'

Estrutura do Banco de Dados

Users

  • id, name, email, password, timestamps

Posts

  • id, user_id (FK), title, content, timestamps

Comments

  • id, user_id (FK), post_id (FK), content, timestamps

Testes

Para popular o banco com dados de teste:

php artisan migrate:fresh --seed

Isso criará:

  • 10 usuários
  • 20-50 posts (2-5 por usuário)
  • Vários comentários em cada post

Segurança

  • Senhas criptografadas com bcrypt
  • Autenticação via JWT
  • Validação de entrada em todos os endpoints
  • Proteção contra SQL Injection via Eloquent
  • Verificação de autorização (apenas autores podem editar/deletar)

Licença

Este projeto é open-source licenciado sob a MIT license.


About Laravel

Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:

Laravel is accessible, powerful, and provides tools required for large, robust applications.

Learning Laravel

Laravel has the most extensive and thorough documentation and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. You can also check out Laravel Learn, where you will be guided through building a modern Laravel application.

If you don't feel like reading, Laracasts can help. Laracasts contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.

Laravel Sponsors

We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel Partners program.

Premium Partners

Contributing

Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the Laravel documentation.

Code of Conduct

In order to ensure that the Laravel community is welcoming to all, please review and abide by the Code of Conduct.

Security Vulnerabilities

If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [email protected]. All security vulnerabilities will be promptly addressed.

License

The Laravel framework is open-sourced software licensed under the MIT license.

About

- Laravel 12 REST API · JWT Auth (JSON Web Tokens) · MySQL Database · Eloquent ORM

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors