Jag utvecklade nyligen ett API med Laravel för ett miniprojekt som jag och några vänner arbetade med. Jag bestämde mig för att bygga ett annat API men med Lumen istället, eftersom det är ett mycket lättare och snabbare ramverk än Laravel.
Lumen är ett mikroramverk som är byggt ovanpå Laravels kärnkomponenter. Lumen använder många välkända koncept från Laravel som Eloquent, caching, routing, middleware och dess service container. En stor fördel med Lumen är dess snabbhet, vilket gör att ramverket är utformat för att bygga snabba mikrotjänster eller API:er.
Tyvärr handlar den här handledningen om Lumen, men det räcker med en enkel förståelse för hur Laravel fungerar för att du ska kunna följa med.
Det finns flera olika sätt att konfigurera Lumen lokalt. För den här handledningens skull kommer vi att göra det via composer
. Du kan kolla in andra sätt att konfigurera Lumen här.
Från din terminal kör du: composer create-project — prefer-dist laravel/lumen lumen_api
Detta kommer att installera Lumen och alla dess beroenden åt dig i lumen_api
katalogen. Därefter ska vi byta namn på filen.env.example
som ligger i katalogen root
till .env
Lumens standarddrivrutin cache
i 5.4 är memcached,
men vi kommer inte att behöva den för den här handledningen. Någon av följande, array
database
och redis
stöds dock. Redigera .env
-filen och ersätt standardvärdena CACHE_DRIVER
och QUEUE_DRIVER
med följande:
CACHE_DRIVER=array
QUEUE_DRIVER=database
För att servera vårt projekt lokalt kan vi använda oss av PHP:s inbyggda server genom att köra följande kommando: php -S localhost:8000 -t public
Visit localhost:8000
i webbläsaren och du bör se följande sida.
Vad vi ska bygga
Vi ska bygga ett enkelt REST-API som hanterar uppgifter för att Skapa, Läsa, Uppdatera och Radera för en product resource
. Låt oss ta en titt på vår endpoints
Databas och migreringar
Låt oss skapa vår migrationsfil. Kör följande kommando:php artisan make:migration create_products_table
Detta kommer att skapa en ny migrationsfil åt dig i katalogen database/migrations
. Vår product resource
kommer att ha följande attribut: name
, price
och description
.
Lägg till följande kod i den nyligen skapade migrationsfilen.
Redigera .env
med dina database
-konfigurationer och kör sedan följande kommando för att utföra migreringen. php artisan migrate
Skapa vår produktmodell
Du kanske redan är van vid att skapa models
och controllers
via artisan
-kommandon i Laravel, men tyvärr har Lumen inte stöd för dessa kommandon. För att se en lista över tillgängliga artisan
-kommandon i Lumen, kör:php artisan
Navigera till katalogen app
och skapa en ny model
som heter Product.php
Till skillnad från Laravel laddar Lumen inte Eloquent och Facades initialt. För att kunna använda dem måste vi avkommentera följande kodrader som finns i app\bootstrap.php
$app->withFacades();
$app->withEloquent();
Controller Methods
Låt oss skapa vår controller
. Navigera till katalogen app\Http\Controller
och skapa en ProductController.php
-fil. Lägg till följande kod i controller
som du just har skapat.
-
index
-metoden returnerar alla tillgängliga produkter som ettJSON
-svar. -
create
-metoden skapar en nyproduct
och returnerar den nyskapadeproduct
som ettJSON
-svar. -
show
-metoden returnerar en enskild produktresurs genom dessid
. Detta returneras också som ettJSON
-svar. -
update
-metoden uppdaterar också en enskild produktresurs med dessid
. -
delete
-metoden raderar en produktresurs med dessid
och returnerar ettsuccess
-meddelande.
Routes
Det är dags att äntligen lägga till vår routes
. Öppna filen web.php
i mappen routes
och lägg till följande kod:
Vi definierar gruppera vår routes
och lägger till prefix
api/v1
eftersom det är en gemensam parameter som delas av alla våra URIs
Tip: Använd Prefix för att specificera gemensamma parametrar för dina grupperade rutter
Såddning av vår databas
Innan vi börjar testa vår endpoints
, ska vi skapa några provdata att arbeta med. Vi börjar med att skapa vår seed
. Kör:php artisan make:seed ProductsTableSeeder
Detta kommer att skapa en ProductsTableSeeder.php
-fil i katalogen database/seeds
. Redigera filen med följande kod:
Nästan redigerar du DatabaseSeeder.php
-filen i katalogen database\seeds
med följande kod:
Vi kommer att använda oss av Larvels Model Factory och Faker-biblioteket för att generera exempeldata. Navigera till katalogen database\factories
och lägg till följande kod i filen ModelFactory.php
.
Nästan, kör:php artisan db:seed
Detta kommer att skapa en massa dummy data för oss i vår database
.
Testning av vårt API
Vi kommer att använda Postman för att testa vårt API. Du kan läsa mer om hur du kommer igång med Postman här.