REST API:n rakentaminen Lumenilla

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 tuotteet JSON-vastauksena.
  • create-metodi luo uuden product:n ja palauttaa äsken luodun product:n JSON-vastauksena.
  • show-metodi palauttaa yksittäisen tuoteresurssin sen id:n mukaan. Tämä palautetaan myös JSON-vastauksena.
  • update-metodi päivittää myös yksittäisen tuoteresurssin sen id mukaan.
  • delete-metodi poistaa tuoteresurssin sen id mukaan ja palauttaa success-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ä.

Vastaa

Sähköpostiosoitettasi ei julkaista.