Vamos dar continuidade ao desenvolvimento de uma API RESTful com Laravel. Nos passos anteriores podemos ver a preparação do ambiente. Houveram diversas dificuldades quanto a questão da preparação do Homestead com o Vagrant, devido a isso foi necessária a divisão em duas partes dos passos.
Diagrama
Vamos utilizar o diagrama abaixo para criar o sistema:
![](https://correiarodrigues.com.br/wp-content/uploads/2022/11/image-13.png)
Artisan: Criando models e controllers
Abra o terminal dentro da pasta do projeto “C:\Projetos\restful-api-php” e entre via SSH com o comando “vagrant ssh” e depois navegue até a pasta do projeto “cd code”. Vamos criar os models utilizando os comandos a seguir:
php artisan make:model Buyer
php artisan make:model Seller
php artisan make:model Category -m
php artisan make:model Product -m
php artisan make:model Transaction -m
![](https://correiarodrigues.com.br/wp-content/uploads/2022/11/image-14.png)
Ajustes nos models Buyer e Seller:
![](https://correiarodrigues.com.br/wp-content/uploads/2022/11/image-17.png)
![](https://correiarodrigues.com.br/wp-content/uploads/2022/11/image-18.png)
Criando os controllers:
php artisan make:controller Buyer/BuyerController -r
php artisan make:controller Seller/SellerController -r
php artisan make:controller Category/CategoryController -r
php artisan make:controller Product/ProductController -r
php artisan make:controller Transaction/TransactionController -r
php artisan make:controller User/UserController -r
![](https://correiarodrigues.com.br/wp-content/uploads/2022/11/image-15.png)
Rotas
Definindo as rotas no arquivo “routes/api.php”:
use App\Http\Controllers\Buyer\BuyerController;
use App\Http\Controllers\Seller\SellerController;
use App\Http\Controllers\Category\CategoryController;
use App\Http\Controllers\Product\ProductController;
use App\Http\Controllers\Transaction\TransactionController;
use App\Http\Controllers\User\UserController;
/**
* Buyers
*/
Route::resource('buyers', BuyerController::class)->only([
'index', 'show'
]);
/**
* Sellers
*/
Route::resource('sellers', SellerController::class)->only([
'index', 'show'
]);
/**
* Categories
*/
Route::resource('categories', CategoryController::class)->except([
'create', 'edit'
]);
/**
* Products
*/
Route::resource('products', ProductController::class)->only([
'index', 'show'
]);
/**
* Transactions
*/
Route::resource('transactions', TransactionController::class)->only([
'index', 'show'
]);
/**
* Users
*/
Route::resource('users', UserController::class)->except([
'create', 'edit'
]);
Models
No prompt de comando, execute o seguinte comando:
php artisan route:list
![](https://correiarodrigues.com.br/wp-content/uploads/2022/11/image-19-1024x519.png)
Definindo os atributos em nosso model, de acordo com o diagrama.
![](https://correiarodrigues.com.br/wp-content/uploads/2022/11/image-54.png)
![](https://correiarodrigues.com.br/wp-content/uploads/2022/11/image-55.png)
![](https://correiarodrigues.com.br/wp-content/uploads/2022/11/image-56.png)
![](https://correiarodrigues.com.br/wp-content/uploads/2022/11/image-57.png)
![](https://correiarodrigues.com.br/wp-content/uploads/2022/11/image-58.png)
![](https://correiarodrigues.com.br/wp-content/uploads/2022/11/image-50.png)
![](https://correiarodrigues.com.br/wp-content/uploads/2022/11/image-68.png)
Definindo o tamanho máximo das strings no arquivo “app/Providers/AppServiceProvider.php”:
![](https://correiarodrigues.com.br/wp-content/uploads/2022/11/image-27.png)
No próximo artigo, vamos continuar com o Migrations. Te espero lá!