Como sabemos, o laravel possui um sistemas de rotas bastante limpo e fácil de usar.
Ao desenvolver uma API Rest, podemos utilizar um comando simples para poder utilizarmos de form automática, uma série de métodos pre formatados do laravel no método resource, veja:
Primeiro, vamos criar um controller de exemplo, utilizando para isso o método de criação resource com a flag api
php artisan make:controller Api/Products -r --api
Com o arquivo criado, podemos ver que o laravel ja crua
php artisan rout:list
Acima, temos os métodos resource predefinidos do laravel, sendo eles:
- index
- store
- show
- update
- destroy
Agora podemos abrir o arquivo routes\api.php e adicionar os seguintes comandos:
use App\Http\Controllers\Api\Products;
Route::apiResource('user', Products::class);
Com este simples comando, o Laravel é capaz de trazar para nós uma rota separada para cada umas das funções escritas no arquivo App\Http\Controllers\Api\Products;
Detalhe que cada uma da rotas virá com um método http específico, pro exemplo:
- function update() = método HTTP put ou pacth
- function destroy() = método HTTP delete
Ese é um padrão muito limpo e bom para se trabalhar.
Ocorre que para muitos sistemas, principalmente utilizando o soft delete do laravel, os comandos acima não são suficientes, pois ficam faltando pelo menos mais dois comandos, sendo eles:
- restore
- delete (apaga o item do banco de dados)
Como adicionar novas rotas ao comando Route api Resource
Criando o arquivo Router.php
Adicionar novas rotas ao comando Route api Resource é relativamente simples, basta estendermos a class Illuminate\Routing\Router, dando a ela novos comandos para incluir novas rotas aos comandos:
- Route::apiResource
- Route::resource
Então crie o arquivo: app\Classes\Router.php e inclua o código abaixo.
app\Classes\Router.php
Inicializar as novas rotas personalizadas do ROUTE::Resource
Com os novos comandos para criação de novas rotas, mostrados no arquivo acima, agora precisamos incluir os novos comandos na inicialização do Laravel, para podermos usa-los.
Para inicializar os novos comandos das rotas (linha 10 do arquivo app\Classes\Router.php):
- restore,
- forceDelete,
- migrate
Abra o arquivo bootstrap\app.php
bootstrap\app.php
Agora inclua o código abaixo:
//custom route
$app->singleton('router', function ($app) {
return new \App\Classes\Router($app['events'], $app);
});
Caso prefira, pode apenas copiar o arquivo abaixo, pois o seu arquivo bootstrap\app.php ficará da seguinte forma:
Como usar as novas rotas resource Restore And Force Delete
Com os comandos para a criação de novas rotas prontos, agora ja podemos utilizá-los em nosso Laravel.
Abra o seu arquivo routes\api.php e escreva os seguintes comandos:
routes\api.php
Adicione agora o comando para geração de suas rodas api resource
Route::customApiResource('produtcs', 'App\Http\Controllers\Api\Products');
Testando as novas rotas Resource Laravel Restore And Force Delete
Agora chegou o momento de testar a novas rotas do seu resouce. Abra o seu terminal e digite os seguintes comandos:
php artisan route:list
Você vai perceber que teremos 13 linhas impressas, ou seja, na imagem anterior, temos 11 linhas de rotas e nesta
Repository GitHub
Baixe os arquivos em nosso repositório GitHub abaixo.