Een REST API bouwen met Lumen

Ik heb onlangs een API ontwikkeld met Laravel voor een miniproject waar een paar vrienden en ik aan werkten. Ik heb besloten om nog een API te bouwen, maar dan met Lumen, omdat dat een veel lichter en sneller framework is dan Laravel.

Lumen is een micro-framework dat bovenop de kerncomponenten van Laravel is gebouwd. Lumen maakt gebruik van veel bekende concepten uit Laravel, zoals Eloquent, caching, routing, middleware en het is een service container. Een groot voordeel van Lumen is de snelheid, waardoor het framework is ontworpen voor het bouwen van snelle micro-services of API’s.

Hoewel deze tutorial over Lumen gaat, is een eenvoudig begrip van hoe Laravel werkt alles wat je nodig hebt om mee te volgen.

Er zijn verschillende manieren waarop je Lumen lokaal kunt opzetten. In het kader van deze tutorial zullen we dat doen via composer. U kunt andere manieren om Lumen in te stellen hier bekijken.
Voer vanuit uw terminal het volgende uit:
composer create-project — prefer-dist laravel/lumen lumen_api
Dit zal Lumen en al zijn afhankelijkheden voor je installeren in de lumen_api directory. Vervolgens hernoemen we het .env.example-bestand in de root-directory naar .env

De standaard cache driver van Lumen in 5.4 is memcached,, maar die hebben we in deze tutorial niet nodig. Elk van de volgende, array database en redis worden echter ondersteund. Bewerk het .env bestand en vervang de standaard CACHE_DRIVER en QUEUE_DRIVER waarden door de volgende:

CACHE_DRIVER=array
QUEUE_DRIVER=database

Om ons project lokaal te serveren, kunnen we gebruik maken van PHP’s ingebouwde server door het volgende commando uit te voeren:
php -S localhost:8000 -t public

Bezoek localhost:8000 in uw browser en u zou de volgende pagina moeten zien.

Wat we gaan bouwen

We gaan een eenvoudige REST API bouwen die taken voor het maken, lezen, bijwerken en verwijderen van een product resource afhandelt. Laten we eens kijken naar onze endpoints

  • GET /products – Alle productbronnen ophalen
  • POST /products – Een nieuwe productbron aanmaken
  • GET /product/{id} – Een productbron ophalen op id
  • PUT /product/{id} – Een productbron bijwerken op id
  • DELETE /product/{id}- Verwijder een product resource op id

Database en Migraties
Laten we ons migratie bestand maken. Voer het volgende commando uit:
php artisan make:migration create_products_table

Dit zal een nieuw migratiebestand voor u aanmaken in de database/migrations directory. Ons product resource zal de volgende attributen hebben, name, price en description.

Voeg de volgende code toe aan het nieuw aangemaakte migratiebestand.

Bewerk .env met uw database-configuraties en voer dan het volgende commando uit om de migratie uit te voeren.
php artisan migrate

Opstellen van ons productmodel
U bent misschien al gewend om models en controllers op te stellen via artisan-commando’s in Laravel, maar helaas ondersteunt Lumen deze commando’s niet. Om een lijst met beschikbare artisan commando’s in Lumen te zien, voert u uit:
php artisan

Navigeer naar de app directory en maak een nieuwe model genaamd Product.php

In tegenstelling tot Laravel, laadt Lumen Eloquent en Facades in eerste instantie niet. Om ze te kunnen gebruiken, moeten we de volgende regels code verwijderen uit app\bootstrap.php
$app->withFacades();

$app->withEloquent();

Controller Methods

Laten we onze controller maken. Navigeer naar de app\Http\Controller directory en maak een ProductController.php bestand. Voeg de volgende code toe aan de controller die u zojuist hebt gemaakt.

  • index-methode retourneert alle beschikbare producten als een JSON-respons.
  • create-methode maakt een nieuwe product en retourneert de nieuw gemaakte product als een JSON-respons.
  • show-methode retourneert een enkele productbron met zijn id. Dit wordt ook geretourneerd als een JSON response.
  • update method werkt een enkele product resource bij door zijn id ook.
  • delete method verwijdert een product resource door zijn id en retourneert een success bericht.

Routes

Het is tijd om eindelijk onze routes toe te voegen. Open het bestand web.php in de map routes en voeg de volgende code toe:

We definiëren onze routes groep en voegen de prefix api/v1 toe omdat het een gemeenschappelijke parameter is die door al onze URIs

Tip: Maak gebruik van Prefix om gemeenschappelijke parameters op te geven voor uw gegroepeerde routes

Seeding our Database

Voordat we beginnen met het testen van onze endpoints, laten we eerst wat voorbeeldgegevens maken om mee te werken. Laten we beginnen met het aanmaken van onze seed. Voer in:
php artisan make:seed ProductsTableSeeder
Dit maakt een ProductsTableSeeder.php-bestand aan in de database/seeds-directory. Bewerk het bestand met de volgende code:

Werk vervolgens het DatabaseSeeder.php-bestand in de database\seeds-directory met de volgende code:
We gaan gebruikmaken van Laravels Model Factory en de Faker-bibliotheek om de voorbeeldgegevens te genereren. Navigeer naar de database\factories-directory en voeg de volgende code toe aan het ModelFactory.php-bestand.

Uitvoeren:
php artisan db:seed

Dit zal een aantal dummygegevens voor ons aanmaken in onze database.

Testen van onze API

We gaan gebruikmaken van Postman om onze API te testen. U kunt hier meer lezen over aan de slag gaan met Postman.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.