Erstellung einer REST-API mit Lumen

Ich habe kürzlich eine API mit Laravel für ein Miniprojekt entwickelt, an dem ein paar Freunde und ich gearbeitet haben. Ich beschloss, eine weitere API zu entwickeln, aber stattdessen mit Lumen, da es ein viel leichteres und schnelleres Framework als Laravel ist.

Lumen ist ein Mikro-Framework, das auf den Kernkomponenten von Laravel aufbaut. Lumen nutzt viele bekannte Konzepte von Laravel wie Eloquent, Caching, Routing, Middleware und seinen Service-Container. Ein großer Vorteil von Lumen ist seine Geschwindigkeit, daher ist das Framework für den Aufbau von schnellen Microservices oder APIs konzipiert.

Auch wenn es in diesem Tutorial um Lumen geht, ist ein einfaches Verständnis der Funktionsweise von Laravel alles, was Sie brauchen, um dem Tutorial zu folgen.

Es gibt mehrere Möglichkeiten, Lumen lokal einzurichten. Für dieses Tutorial werden wir dies über composer tun. Weitere Möglichkeiten, Lumen einzurichten, können Sie hier nachlesen.
Führen Sie in Ihrem Terminal aus:
composer create-project — prefer-dist laravel/lumen lumen_api
Dies installiert Lumen und alle seine Abhängigkeiten für dich im lumen_api Verzeichnis. Als nächstes benennen wir die Datei .env.example im Verzeichnis root in .env

um

Lumens Standardtreiber cache (Stand 5.4) ist memcached,, aber den brauchen wir für dieses Tutorial nicht. Es wird jedoch jeder der folgenden unterstützt: array database und redis. Bearbeiten Sie die Datei .env und ersetzen Sie die Standardwerte CACHE_DRIVER und QUEUE_DRIVER durch die folgenden Werte:

CACHE_DRIVER=array
QUEUE_DRIVER=database

Um unser Projekt lokal auszuliefern, können wir den in PHP eingebauten Server verwenden, indem wir den folgenden Befehl ausführen:
php -S localhost:8000 -t public

Besuchen Sie localhost:8000 in Ihrem Browser und Sie sollten die folgende Seite sehen.

Was wir bauen werden

Wir werden eine einfache REST-API bauen, die Aufgaben zum Erstellen, Lesen, Aktualisieren und Löschen eines product resource bearbeitet. Werfen wir einen Blick auf unsere endpoints

  • GET /products – Holt alle Produktressourcen
  • POST /products- Erstellt eine neue Produktressource
  • GET /product/{id} – Holt eine Produktressource nach id
  • PUT /product/{id} – Aktualisiert eine Produktressource nach id
  • DELETE /product/{id}- Löschen einer Produktressource nach id

Datenbank und Migrationen
Lassen Sie uns unsere Migrationsdatei erstellen. Führen Sie den folgenden Befehl aus:
php artisan make:migration create_products_table

Dadurch wird eine neue Migrationsdatei im Verzeichnis database/migrations erstellt. Unser product resource wird die folgenden Attribute haben: name, price und description.

Fügen Sie der neu erstellten Migrationsdatei den folgenden Code hinzu.

Bearbeiten Sie .env mit Ihren databaseKonfigurationen und führen Sie dann den folgenden Befehl aus, um die Migration auszuführen.
php artisan migrate

Erstellen unseres Produktmodells
Sie sind vielleicht schon daran gewöhnt, models und controllers über artisan Befehle in Laravel zu erstellen, aber leider unterstützt Lumen diese Befehle nicht. Um eine Liste der verfügbaren artisan-Befehle in Lumen zu sehen, führen Sie aus:
php artisan

Navigieren Sie zum app-Verzeichnis und erstellen Sie ein neues model mit dem Namen Product.php

Im Gegensatz zu Laravel lädt Lumen Eloquent und Facades zunächst nicht. Um sie nutzen zu können, müssen wir die folgenden Codezeilen auskommentieren, die sich in app\bootstrap.php
$app->withFacades();

$app->withEloquent();

Controller Methods

Lassen Sie uns unser controller erstellen. Navigieren Sie zum Verzeichnis app\Http\Controller und erstellen Sie eine ProductController.php-Datei. Fügen Sie den folgenden Code in die soeben erstellte controller-Datei ein.

  • index-Methode gibt alle verfügbaren Produkte als JSON-Antwort zurück.
  • create-Methode erstellt eine neue product-Datei und gibt die neu erstellte product-Datei als JSON-Antwort zurück.
  • show-Methode gibt eine einzelne Produktressource anhand ihres id zurück. Diese wird ebenfalls als JSON-Antwort zurückgegeben.
  • updateMethode aktualisiert ebenfalls eine einzelne Produktressource anhand ihrer id.
  • deleteMethode löscht eine Produktressource anhand ihrer id und gibt eine successNachricht zurück.

Routen

Es ist an der Zeit, endlich unsere routes hinzuzufügen. Öffnen Sie die Datei web.php im Ordner routes und fügen Sie den folgenden Code hinzu:

Wir gruppieren unsere routes und fügen den prefix api/v1 hinzu, da es sich um einen gemeinsamen Parameter für alle unsere URIs

Tipp: Verwenden Sie Prefix, um gemeinsame Parameter für Ihre gruppierten Routen festzulegen

Datenbank füttern

Bevor wir mit dem Testen unserer endpoints beginnen, erstellen wir einige Beispieldaten, mit denen wir arbeiten können. Beginnen wir mit der Erstellung unseres seed. Führen Sie aus:
php artisan make:seed ProductsTableSeeder
Dadurch wird eine ProductsTableSeeder.php-Datei im Verzeichnis database/seeds erstellt. Bearbeiten Sie die Datei mit folgendem Code:

Bearbeiten Sie als Nächstes die Datei DatabaseSeeder.php im Verzeichnis database\seeds mit folgendem Code:
Wir werden die Model Factory von Laravel und die Faker Library verwenden, um die Beispieldaten zu erzeugen. Navigieren Sie zum Verzeichnis database\factories und fügen Sie den folgenden Code zur Datei ModelFactory.php hinzu.

Als Nächstes führen Sie aus:
php artisan db:seed

Dies wird eine Reihe von Dummy-Daten für uns in unserem database erstellen.

Testen unserer API

Wir werden Postman verwenden, um unsere API zu testen. Mehr über die ersten Schritte mit Postman können Sie hier lesen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.