API REST completa para um sistema de blog desenvolvida com Laravel 12 e autenticação JWT.
- ✅ 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
- Laravel 12 - Framework PHP
- JWT Auth - Autenticação via JSON Web Tokens
- MySQL - Banco de dados (configurado)
- Eloquent ORM - Mapeamento objeto-relacional
- PHP 8.2+
- Composer
- MySQL 5.7+ ou 8.0+
Windows:
cd blog-api
# 1. Instalar dependências
composer install
# 2. Executar setup completo (cria banco, migrations e seeders)
setup-mysql.batLinux/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- Clone o repositório e entre na pasta:
cd blog-api- Instale as dependências:
composer install- Configure o arquivo
.env:
cp .env.example .env
php artisan key:generate
php artisan jwt:secret- 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- Crie o banco de dados:
Opção 1 - Script SQL:
mysql -u root -p < database/setup_mysql.sqlOpçã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- Execute as migrations e seeders:
php artisan migrate --seed- Inicie o servidor:
php artisan serveA API estará disponível em: http://localhost:8000
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
Após executar os seeders, você terá acesso a:
- Email: [email protected]
- Senha: password
GET /api/posts- Listar todos os postsGET /api/posts/{id}- Ver um post específicoGET /api/posts/{id}/comments- Ver comentários de um postPOST /api/register- Registrar novo usuárioPOST /api/login- Fazer login
POST /api/posts- Criar postPUT /api/posts/{id}- Atualizar post (apenas autor)DELETE /api/posts/{id}- Deletar post (apenas autor)POST /api/posts/{id}/comments- Criar comentárioPUT /api/comments/{id}- Atualizar comentário (apenas autor)DELETE /api/comments/{id}- Deletar comentário (apenas autor)GET /api/me- Dados do usuário autenticadoPOST /api/logout- Fazer logoutPOST /api/refresh- Atualizar token
- API_DOCUMENTATION.md - Documentação completa da API com exemplos
- API_EXAMPLES.md - Exemplos práticos de uso com cURL, JavaScript e mais
- GUIA_POSTMAN.md - Como usar a coleção do Postman
Importe os arquivos no Postman para testar facilmente:
- Blog-API.postman_collection.json - Coleção completa com todos os endpoints
- Blog-API.postman_environment.json - Variáveis de ambiente
👉 Consulte o GUIA_POSTMAN.md para instruções detalhadas
# 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"}'- id, name, email, password, timestamps
- id, user_id (FK), title, content, timestamps
- id, user_id (FK), post_id (FK), content, timestamps
Para popular o banco com dados de teste:
php artisan migrate:fresh --seedIsso criará:
- 10 usuários
- 20-50 posts (2-5 por usuário)
- Vários comentários em cada post
- 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)
Este projeto é open-source licenciado sob a MIT license.
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:
- Simple, fast routing engine.
- Powerful dependency injection container.
- Multiple back-ends for session and cache storage.
- Expressive, intuitive database ORM.
- Database agnostic schema migrations.
- Robust background job processing.
- Real-time event broadcasting.
Laravel is accessible, powerful, and provides tools required for large, robust applications.
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.
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.
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the Laravel documentation.
In order to ensure that the Laravel community is welcoming to all, please review and abide by the Code of Conduct.
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.
The Laravel framework is open-sourced software licensed under the MIT license.