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éketJSON
válaszként adja vissza. -
create
módszer létrehoz egy újproduct
-et, és az újonnan létrehozottproduct
-etJSON
válaszként adja vissza. -
show
módszer egyetlen termék erőforrást ad vissza aid
alapján. Ezt szinténJSON
válaszként adja vissza. -
update
metódus szintén frissít egy termék erőforrást aid
alapján. -
delete
metódus törli a termék erőforrást aid
alapján és egysuccess
ü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.