Kehitin hiljattain Laravelilla API:n parin ystäväni kanssa toteuttamaani miniprojektiin. Päätin rakentaa toisen API:n, mutta sen sijaan Lumenilla, koska se on paljon kevyempi ja nopeampi kehys kuin Laravel.
Lumen on mikrokehys, joka on rakennettu Laravelin ydinkomponenttien päälle. Lumen hyödyntää paljon Laravelista tuttuja konsepteja, kuten Eloquentia, välimuistitusta, reititystä, middlewarea ja sen palvelusäiliötä. Yksi Lumenin suurimmista eduista on sen nopeus, minkä seurauksena kehys on suunniteltu nopeiden mikropalveluiden tai API:iden rakentamiseen.
Vaikka tämä opetusohjelma käsittelee Lumenia, tarvitset vain yksinkertaisen ymmärryksen siitä, miten Laravel toimii, jotta voit seurata mukana.
Lumenin voi asentaa paikallisesti usealla eri tavalla. Tämän tutoriaalin vuoksi teemme sen composer
kautta. Voit tutustua muihin tapoihin määrittää Lumen täällä.
Suorita terminaalista: composer create-project — prefer-dist laravel/lumen lumen_api
Tämä asentaa Lumenin ja kaikki sen riippuvuudet sinulle lumen_api
hakemistoon. Seuraavaksi nimeämme root
-hakemistossa sijaitsevan .env.example
-tiedoston uudelleen .env
Lumenin oletusarvoinen cache
-ajuri 5.4:ssä on memcached,
, mutta emme tarvitse sitä tässä opetusohjelmassa. Mikä tahansa seuraavista, array
database
ja redis
, on kuitenkin tuettu. Muokkaa .env
-tiedostoa ja korvaa oletusarvot CACHE_DRIVER
ja QUEUE_DRIVER
seuraavilla arvoilla:
CACHE_DRIVER=array
QUEUE_DRIVER=database
Tarjoillaksemme projektimme paikallisesti voimme hyödyntää PHP:n sisäänrakennettua palvelinta suorittamalla seuraavan komennon:php -S localhost:8000 -t public
Käy localhost:8000
selaimessasi ja sinun pitäisi nähdä seuraava sivu.
Mitä rakennamme
Rakennamme yksinkertaisen REST API -rajapinnan, joka käsittelee luonti-, luku-, päivitys-, päivitys- ja poistotehtäviä product resource
. Katsotaanpa endpoints
- GET /products – Haetaan kaikki tuoteresurssit
- POST /products- Luodaan uusi tuoteresurssi
- GET /product/{id} – Haetaan tuoteresurssi id:n perusteella
- PUT /product/{id} – Päivitetään tuoteresurssi id:n perusteella
- DELETE /product/{id}- Delete a product resource by id
Database and Migrations
Luotaan siirtotiedostomme. Suorita seuraava komento:php artisan make:migration create_products_table
Tämä luo sinulle uuden migraatiotiedoston hakemistoon database/migrations
. Meidän product resource
nimisessä tiedostossamme on seuraavat attribuutit: name
, price
ja description
.
Lisää juuri luotuun migraatiotiedostoon seuraava koodi.
Muokkaa .env
-tiedostoa database
-konfiguraatioillasi ja suorita migraatio sitten seuraavalla komennolla. php artisan migrate
Tuotemallimme luominen
Olet ehkä jo tottunut luomaan models
ja controllers
Laravelissa artisan
-komennoilla, mutta valitettavasti Lumen ei tue näitä komentoja. Nähdäksesi luettelon saatavilla olevista artisan
-komennoista Lumenissa, suorita:php artisan
Navigoi app
-hakemistoon ja luo uusi model
nimeltään Product.php
Toisin kuin Laravel, Lumen ei aluksi lataa Eloquentia ja Facadeja. Pystyäksemme käyttämään niitä, meidän on poistettava seuraavat koodirivit, jotka sijaitsevat app\bootstrap.php
$app->withFacades();
$app->withEloquent();
Controller Methods
Luotaan meidän controller
. Siirry app\Http\Controller
-hakemistoon ja luo ProductController.php
-tiedosto. Lisää juuri luotuun controller
:ään seuraava koodi.
-
index
-metodi palauttaa kaikki saatavilla olevat tuotteetJSON
-vastauksena. -
create
-metodi luo uudenproduct
:n ja palauttaa äsken luodunproduct
:nJSON
-vastauksena. -
show
-metodi palauttaa yksittäisen tuoteresurssin senid
:n mukaan. Tämä palautetaan myösJSON
-vastauksena. -
update
-metodi päivittää myös yksittäisen tuoteresurssin senid
mukaan. -
delete
-metodi poistaa tuoteresurssin senid
mukaan ja palauttaasuccess
-viestin.
Reitit
On aika vihdoin lisätä meidän routes
. Avaa web.php
-tiedosto routes
-kansiossa ja lisää seuraava koodi:
Määrittelemme ryhmän meidän routes
ja lisäämme prefix
api/v1
, koska se on yhteinen parametri, joka on yhteinen kaikille meidän URIs
Tip:
Tietokantamme kylväminen
Ennen kuin aloitamme endpoints
:n testaamisen, luodaan esimerkkitietoja, joiden kanssa työskennellä. Aloitetaan luomalla seed
. Suorita:php artisan make:seed ProductsTableSeeder
Tämä luo ProductsTableSeeder.php
-tiedoston database/seeds
-hakemistoon. Muokkaa tiedostoa seuraavalla koodilla:
Muokkaa seuraavaksi database\seeds
-hakemistossa olevaa DatabaseSeeder.php
-tiedostoa seuraavalla koodilla:
Hyödynnämme Laravel Model Factoryn ja Faker-kirjaston avulla esimerkkidatan luomiseen. Siirry database\factories
-hakemistoon ja lisää seuraava koodi ModelFactory.php
-tiedostoon.
Seuraavaksi suorita:php artisan db:seed
Tämä luo meille joukon dummy-dataa database
:ssa.
API:n testaaminen
Hyödynnämme Postmania API:n testaamiseen. Voit lukea lisää Postmanin käyttöönotosta täältä.