Jeg har for nylig udviklet et API med Laravel til et miniprojekt, som et par venner og jeg arbejdede på. Jeg besluttede mig for at bygge endnu et API, men med Lumen i stedet, da det er et langt lettere og hurtigere framework end Laravel.
Lumen er et mikro-framework bygget oven på Laravels kernekomponenter. Lumen udnytter en masse velkendte koncepter fra Laravel såsom Eloquent, caching, routing, middleware og dens servicecontainer. En stor fordel ved Lumen er dens hastighed, som følge heraf er rammen designet til opbygning af hurtige mikrotjenester eller API’er.
Selv om denne tutorial handler om Lumen, er en simpel forståelse af, hvordan Laravel fungerer, alt hvad du behøver for at følge med.
Der er flere måder, du kan opsætte Lumen lokalt på. I forbindelse med denne vejledning gør vi det via composer
. Du kan se andre måder at opsætte Lumen på her.
Fra din terminal skal du køre: composer create-project — prefer-dist laravel/lumen lumen_api
Dette vil installere Lumen og alle dets afhængigheder for dig i lumen_api
mappen. Dernæst omdøber vi filen .env.example
, der ligger i mappen root
, til .env
Lumens standard cache
-driver som i 5.4 er memcached,
, men det får vi ikke brug for i denne vejledning. Men enhver af følgende, array
database
og redis
er understøttet. Rediger .env
-filen og erstat standardværdierne CACHE_DRIVER
og QUEUE_DRIVER
med følgende:
CACHE_DRIVER=array
QUEUE_DRIVER=database
For at servere vores projekt lokalt kan vi gøre brug af PHP’s indbyggede server ved at køre følgende kommando:php -S localhost:8000 -t public
Besøg localhost:8000
i din browser, og du bør se følgende side.
Hvad vi skal bygge
Vi skal bygge et simpelt REST API, der håndterer Create, Read, Update og Delete-opgaver for en product resource
. Lad os tage et kig på vores endpoints
Database og migreringer
Lad os oprette vores migreringsfil. Kør følgende kommando:php artisan make:migration create_products_table
Dette vil oprette en ny migreringsfil til dig i mappen database/migrations
. Vores product resource
vil have følgende attributter, name
, price
og description
.
Føj følgende kode til den nyligt oprettede migrationsfil.
Rediger .env
med dine database
-konfigurationer, og kør derefter følgende kommando for at udføre migreringen. php artisan migrate
Skabelse af vores produktmodel
Du er måske allerede vant til at oprette models
og controllers
via artisan
-kommandoer i Laravel, men desværre understøtter Lumen ikke disse kommandoer. Du kan se en liste over tilgængelige artisan
-kommandoer i Lumen ved at køre:php artisan
Navigér til app
-mappen, og opret en ny model
kaldet Product.php
I modsætning til Laravel indlæser Lumen ikke Eloquent og Facades i første omgang. For at kunne bruge dem skal vi afkommentere følgende kodelinjer, der ligger i app\bootstrap.php
$app->withFacades();
$app->withEloquent();
Controller Methods
Lad os oprette vores controller
. Naviger til mappen app\Http\Controller
, og opret en ProductController.php
-fil. Tilføj følgende kode til den controller
, du lige har oprettet.
-
index
metode returnerer alle tilgængelige produkter som etJSON
svar. -
create
metode opretter en nyproduct
og returnerer den nyligt oprettedeproduct
som etJSON
svar. -
show
metode returnerer en enkelt produktressource ved hjælp af densid
. Dette returneres også som etJSON
-svar. -
update
metode opdaterer også en enkelt produktressource ved densid
. -
delete
metode sletter en produktressource ved densid
og returnerer ensuccess
-meddelelse.
Routes
Det er på tide endelig at tilføje vores routes
. Åbn filen web.php
i mappen routes
, og tilføj følgende kode:
Vi definerer gruppen vores routes
og tilføjer prefix
api/v1
, da det er en fælles parameter, der deles af alle vores URIs
Tip: Gør brug af Prefix til at angive fælles parametre for dine grupperede ruter
Sæt vores database
Hvor vi begynder at teste vores endpoints
, skal vi oprette nogle eksempeldata, som vi kan arbejde med. Lad os starte med at oprette vores seed
. Kør:php artisan make:seed ProductsTableSeeder
Dette vil oprette en ProductsTableSeeder.php
-fil i mappen database/seeds
. Rediger filen med følgende kode:
Rediger derefter filen DatabaseSeeder.php
i mappen database\seeds
med følgende kode:
Vi vil gøre brug af Laravels Model Factory og Faker-biblioteket til at generere eksempeldataene. Naviger til database\factories
-mappen, og tilføj følgende kode til ModelFactory.php
-filen.
Kør derefter:php artisan db:seed
Dette vil oprette en masse dummy-data til os i vores database
.
Test af vores API
Vi vil gøre brug af Postman til at teste vores API. Du kan læse mere om at komme i gang med Postman her.