Construirea unui API REST cu Lumen

Am dezvoltat recent un API cu Laravel pentru un mini-proiect la care am lucrat împreună cu câțiva prieteni. Am decis să construiesc un alt API, dar cu Lumen în schimb, deoarece este un framework mult mai ușor și mai rapid decât Laravel.

Lumen este un micro-framework construit pe baza componentelor de bază ale lui Laravel. Lumen utilizează o mulțime de concepte familiare din Laravel, cum ar fi Eloquent, caching, rutare, middleware și containerul său de servicii. Un avantaj major al Lumen este viteza sa, ca urmare cadrul este proiectat pentru construirea de micro-servicii sau API-uri rapide.

Deși acest tutorial este despre Lumen, o simplă înțelegere a modului în care funcționează Laravel este tot ce aveți nevoie pentru a urmări.

Există mai multe moduri în care puteți configura Lumen la nivel local. De dragul acestui tutorial, vom face acest lucru prin composer. Puteți verifica și alte moduri de a configura Lumen aici.
Din terminalul dumneavoastră, rulați:
composer create-project — prefer-dist laravel/lumen lumen_api
Aceasta va instala Lumen și toate dependențele sale pentru dvs. în directorul lumen_api . În continuare, vom redenumi fișierul.env.example aflat în directorul root în .env

Driverul implicit cache al lui Lumen ca la 5.4 este memcached,, dar nu vom avea nevoie de el pentru acest tutorial. Cu toate acestea, oricare dintre următoarele, array database și redis sunt acceptate. Editați fișierul .env și înlocuiți valorile implicite CACHE_DRIVER și QUEUE_DRIVER cu următoarele:

CACHE_DRIVER=array
QUEUE_DRIVER=database

Pentru a servi proiectul nostru local, putem folosi serverul încorporat în PHP prin rularea următoarei comenzi:
php -S localhost:8000 -t public

Vizitați localhost:8000 în browser și ar trebui să vedeți următoarea pagină.

Ce vom construi

Vom construi un API REST simplu care gestionează sarcinile Create, Read, Update și Delete pentru un product resource . Să aruncăm o privire la endpoints

  • GET /products – Obține toate resursele de produs
  • POST /products- Creează o nouă resursă de produs
  • GET /product/{id} – Obține o resursă de produs după id
  • PUT /product/{id} – Actualizează o resursă de produs după id
  • DELETE /product/{id}- Șterge o resursă de produs după id

Bază de date și migrații
Să creăm fișierul nostru de migrare. Rulați următoarea comandă:
php artisan make:migration create_products_table

Aceasta va crea un nou fișier de migrare pentru dvs. în directorul database/migrations. Fișierul nostru product resource va avea următoarele atribute, name, price și description.

Adaugați următorul cod la fișierul de migrare nou creat.

Editați .env cu configurațiile dvs. database și apoi rulați următoarea comandă pentru a executa migrarea.
php artisan migrate

Crearea modelului nostru de produs
S-ar putea să fiți deja obișnuiți să creați models și controllers prin intermediul comenzilor artisan în Laravel, dar, din păcate, Lumen nu acceptă aceste comenzi. Pentru a vedea o listă de comenzi artisan disponibile în Lumen, rulați:
php artisan

Navigați în directorul app și creați un nou model numit Product.php

În comparație cu Laravel, Lumen nu încarcă inițial Eloquent și Facades. Pentru a le putea utiliza, trebuie să decomentăm următoarele linii de cod situate în app\bootstrap.php
$app->withFacades();

$app->withEloquent();

Controller Methods

Să ne creăm controller. Navigați în directorul app\Http\Controller și creați un fișier ProductController.php. Adăugați următorul cod la controller pe care tocmai l-ați creat.

  • index Metoda index returnează toate produsele disponibile ca răspuns JSON.
  • create Metoda create creează un nou product și returnează product nou creat ca răspuns JSON.
  • show Metoda show returnează o singură resursă de produs prin id sa. Aceasta este, de asemenea, returnată ca răspuns JSON.
  • update metoda actualizează o singură resursă de produs prin id, de asemenea.
  • delete metoda șterge o resursă de produs prin id și returnează un mesaj success.

Routes

Este timpul să adăugăm în sfârșit routes nostru. Deschideți fișierul web.php din dosarul routes și adăugați următorul cod:

Definim grupul nostru routes și adăugăm prefix api/v1, deoarece este un parametru comun partajat de toate URIs

Tipurile noastre: Utilizați Prefixul pentru a specifica parametrii comuni pentru rutele dvs. grupate

Încărcarea bazei noastre de date

Înainte de a începe să testăm endpoints nostru, să creăm câteva date de probă cu care să lucrăm. Să începem prin a ne crea seed. Rulați:
php artisan make:seed ProductsTableSeeder
Aceasta va crea un fișier ProductsTableSeeder.php în directorul database/seeds. Editați fișierul cu următorul cod:

În continuare, editați fișierul DatabaseSeeder.php din directorul database\seeds cu următorul cod:
Vom folosi Model Factory de la Laravel și biblioteca Faker pentru a genera datele de probă. Navigați în directorul database\factories și adăugați următorul cod în fișierul ModelFactory.php.

În continuare, rulați:
php artisan db:seed

Acest lucru va crea o grămadă de date fictive pentru noi în database.

Testarea API-ului nostru

Ne vom folosi de Postman pentru a testa API-ul nostru. Puteți citi mai multe despre cum să vă familiarizați cu Postman aici.

Lasă un răspuns

Adresa ta de email nu va fi publicată.