Laravel 11 é um framework PHP robusto e flexível, ideal para criar APIs RESTful. Neste artigo, vamos mostrar como construir uma aplicação CRUD (Create, Read, Update, Delete) seguindo as melhores práticas com Laravel 11. Siga este guia passo a passo para garantir que sua API esteja bem estruturada e eficiente.
Criando uma API RESTful CRUD com Laravel 11
Passo 1: Instalação e Configuração do Banco de Dados
Instalar Laravel 11
Abra o terminal e execute o comando:
composer create-project laravel/laravel apicrud
Configurar o Banco de Dados
No arquivo .env, insira as credenciais do banco de dados:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nome_do_banco
DB_USERNAME=usuario
DB_PASSWORD=senha
Passo 2: Criando Modelos, Requests, Resources, Controllers e Rotas
Criar Modelo e Migração
No terminal, execute:
php artisan make:model Post -m
Gerar Request de Validação
php artisan make:request StorePostRequest
Criar Resource
php artisan make:resource PostResource
Gerar Controller
php artisan make:controller Api/PostController --model=Post
Passo 3: Configuração da Migração
No arquivo database/migrations/create_posts_table.php, configure a tabela:
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('posts');
}
Passo 4: Modelo Post
No arquivo app/Models/Post.php, defina o modelo:
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use HasFactory;
protected $fillable = ['title', 'content'];
}
Passo 5: Request de Validação
No arquivo app/Http/Requests/StorePostRequest.php, defina as regras de validação:
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StorePostRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'title' => ['required', 'max:70'],
'content' => ['required']
];
}
}
Passo 6: Resource Post
No arquivo app/Http/Resources/PostResource.php, defina a estrutura do recurso:
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class PostResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
'content' => $this->content,
'created_at' => $this->created_at,
];
}
}
Passo 7: Controller Post
No arquivo app/Http/Controllers/Api/PostController.php, defina os métodos CRUD:
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Post;
use Illuminate\Http\Request;
use App\Http\Requests\StorePostRequest;
use App\Http\Resources\PostResource;
class PostController extends Controller
{
public function index()
{
$posts = Post::all();
return PostResource::collection($posts);
}
public function store(StorePostRequest $request)
{
$post = Post::create($request->validated());
return new PostResource($post);
}
public function update(StorePostRequest $request, Post $post)
{
$post->update($request->validated());
return new PostResource($post);
}
public function destroy(Post $post)
{
$post->delete();
return response(null, 204);
}
}
Passo 8: Configurar as Rotas
No arquivo routes/api.php, defina as rotas da API:
use App\Http\Controllers\Api\PostController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Route::apiResource('posts', PostController::class)->except([
'create', 'show', 'edit'
]);
Passo 9: Executar a Aplicação Laravel
Execute o servidor:
php artisan serve
Vídeo
Clique aqui para assistir ao vídeo deste tutorial
Conclusão utilizando Laravel
Seguindo estes passos, você terá uma aplicação CRUD RESTful utilizando Laravel 11, seguindo as melhores práticas. Certifique-se de testar todos os endpoints e validar as respostas da API com softwares como Postman.
E não se esqueça de aproveitar a oferta limitada para se inscrever no meu curso de desenvolvimento web para iniciantes! Saiba mais clicando aqui!