REST API építése Lumen segítségével

Nemrég fejlesztettem egy API-t Laravel segítségével egy miniprojekthez, amin néhány barátommal dolgoztunk. Úgy döntöttem, hogy építek egy másik API-t, de inkább a Lumen segítségével, mivel ez egy sokkal könnyebb és gyorsabb keretrendszer, mint a Laravel.

A Lumen egy mikro-keretrendszer, amely a Laravel alapkomponenseire épül. A Lumen sok, a Laravelből ismert koncepciót használ, mint például az Eloquent, a gyorsítótár, a routing, a middleware és a szolgáltatáskonténer. A Lumen egyik fő előnye a gyorsasága, ennek eredményeként a keretrendszert gyors mikroszolgáltatások vagy API-k építésére tervezték.

Noha ez a bemutató a Lumenről szól, a Laravel működésének egyszerű megértése elegendő a követéshez.

A Lumen helyi beállításának több módja is van. Ennek a bemutatónak a kedvéért ezt a composer segítségével fogjuk megtenni. A Lumen beállításának más módjait itt tekintheti meg.
A terminálból futtassa a következőt:
composer create-project — prefer-dist laravel/lumen lumen_api
Ez telepíti a Lumen-t és az összes függőségét a lumen_api könyvtárba. Ezután átnevezzük a root könyvtárban található .env.example fájlt .env

A Lumen alapértelmezett cache meghajtója az 5.4-es verziónál memcached,, de erre a bemutatóhoz nem lesz szükségünk. Azonban az alábbiak közül bármelyik, array database és redis támogatott. Szerkesszük meg a .env fájlt, és cseréljük ki az alapértelmezett CACHE_DRIVER és QUEUE_DRIVER értékeket a következőkre:

CACHE_DRIVER=array
QUEUE_DRIVER=database

A projektünk helyi kiszolgálásához a PHP beépített szerverét használhatjuk a következő parancs futtatásával:
php -S localhost:8000 -t public

Látogassunk el localhost:8000 a böngészőben, és a következő oldalt kell látnunk.

Mit fogunk építeni

Egy egyszerű REST API-t fogunk építeni, amely a Create, Read, Update és Delete feladatokat kezeli egy product resource . Nézzük meg a endpoints

  • GET /products – Az összes termék erőforrás lekérése
  • POST /products- Új termék erőforrás létrehozása
  • GET /product/{id} – Termék erőforrás lekérése az id alapján
  • PUT /product/{id} – Termék erőforrás frissítése az id alapján
  • DELETE /product/{id}-. Termék erőforrás törlése az id alapján

Adatbázis és migrációk
Hozzuk létre a migrációs fájlunkat. Futtassuk a következő parancsot:
php artisan make:migration create_products_table

Ez egy új migrációs fájlt hoz létre számunkra a database/migrations könyvtárban. A mi product resource unk a következő attribútumokkal fog rendelkezni: name, price és description.

Adjuk hozzá a következő kódot az újonnan létrehozott migrációs fájlhoz.

Módosítsuk a .env-t a database konfigurációinkkal, majd futtassuk a következő parancsot a migráció végrehajtásához.
php artisan migrate

A termékmodellünk létrehozása
Az models és controllers létrehozásához már hozzászokhattál a Laravelben a artisan parancsok segítségével, de sajnos a Lumen nem támogatja ezeket a parancsokat. A Lumenben elérhető artisan parancsok listájának megtekintéséhez futtassa:
php artisan

Navigáljon a app könyvtárba, és hozzon létre egy új model-t Product.php

A Laraveltől eltérően a Lumen kezdetben nem tölti be az Eloquent és a Facades parancsokat. Ahhoz, hogy használni tudjuk őket, a app\bootstrap.php
$app->withFacades();

$app->withEloquent();

Controller Methods

Készítsük el a controller-ünket. Navigáljunk a app\Http\Controller könyvtárba, és hozzunk létre egy ProductController.php fájlt. Adjuk hozzá a következő kódot az imént létrehozott controller-hez.

  • index módszer az összes elérhető terméket JSON válaszként adja vissza.
  • create módszer létrehoz egy új product-et, és az újonnan létrehozott product-et JSON válaszként adja vissza.
  • show módszer egyetlen termék erőforrást ad vissza a id alapján. Ezt szintén JSON válaszként adja vissza.
  • update metódus szintén frissít egy termék erőforrást a id alapján.
  • delete metódus törli a termék erőforrást a id alapján és egy success üzenetet ad vissza.

Routes

Eljött az idő, hogy végre hozzáadjuk a routes-ünket. Nyissuk meg a web.php fájlt a routes mappában, és adjuk hozzá a következő kódot:

Meghatározzuk a routes csoportosításunkat, és hozzáadjuk a prefix api/v1, mivel ez egy közös paraméter, amelyet az összes URIs

Tip:

Adatbázisunk betáplálása

Mielőtt elkezdenénk tesztelni a endpoints-ünket, hozzunk létre néhány mintaadatot, amivel dolgozhatunk. Kezdjük a seed létrehozásával. Futtassuk:
php artisan make:seed ProductsTableSeeder
Ezzel létrehozunk egy ProductsTableSeeder.php fájlt a database/seeds könyvtárban. Szerkesszük a fájlt a következő kóddal:

Majd szerkesszük a DatabaseSeeder.php fájlt a database\seeds könyvtárban a következő kóddal:
A mintaadatok létrehozásához a Laravel Model Factory-t és a Faker könyvtárat fogjuk használni. Navigáljunk a database\factories könyvtárba, és adjuk hozzá a következő kódot a ModelFactory.php fájlhoz.

A következő futtatás:
php artisan db:seed

Ez egy csomó dummy adatot fog létrehozni számunkra a database-ben.

Az API tesztelése

A Postman-t fogjuk használni az API teszteléséhez. A Postman használatának megkezdéséről itt olvashat bővebben.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.