REST-Api mit Laravel

Lara­vel bie­tet alle Vor­aus­set­zun­gen, um rele­tiv schnell eine REST-API für eine Daten­bank anzu­le­gen. Hier die kur­ze Zusam­men­fas­sung für das übli­che Beispielprojekt.

  1. Als Bei­spiel soll eine simp­le Bücher-Daten­bank alge­legt werden.
  2. Vor­aus­set­zun­gen: PHP und com­po­ser sind instal­liert,
    z.B. aus den Sys­tem-Paket­quel­len php und php-composer
  3. Mit com­po­ser ein neu­es Lara­vel-Pro­jekt (Name hier MyApi) anle­gen

    composer create-project laravel/laravel --prefer-dist MyApi

    Das legt eine typi­sche Ver­zeich­nis­struk­tur mit den nöti­gen Scripts und Biblio­the­ken für ein Lara­vel-Pro­jekt an.
  4. In root-Ver­zeich­nis in der Datei .env die Daten­bank­Ver­bin­dung defi­nie­ren, z.B.

    DB_CONNECTION=mysql
    DB_HOST=localhost
    DB_PORT=3306
    DB_DATABASE=MyBooks
    DB_USERNAME=MyDbUser
    DB_PASSWORD=MyDbPwd
  5. Mit arti­san das Daten­bank-Model inkl. Migra­ti­on für die Books-Daten­bank anle­gen

    php artisan make:model Books -m

    Das erzeugt die Datei­en

    app/Models/Books.php
    database/migrations/xxxxx_create_books_table.php
  6. in app/Models/Books.php den Tabel­len­na­men in $table und die Tabel­len­fel­der in $fillable ein­tra­gen

    protected $table = 'books';
    protected $fillable = ['name', 'author', 'publish_date'];
  7. in database/migrations/xxxxx_create_books_table.php in die Funk­ti­on „up” die Anwei­sun­gen zum Erzeu­gen der Tabel­le ein­tra­gen

    Schema::create('books', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('author');
    $table->date('publish_date');
    $table->timestamps();
    });
  8. Tabel­le erzeu­gen

    php artisan migrate
  9. Daten­bank mit eini­gen Ein­trä­gen fül­len (manu­ell oder mit Seeding)
  10. Mit arti­san einen Con­trol­ler erzu­eu­gen

    php artisan make:controller BookController

    Das erzeugt die Datei app/Http/Controllers/BookController.php
  11. In BookController.php die Funk­tio­nen für die API-Calls anle­gen. z.B. die Funk­ti­on zum Lis­ten aller Bücher

    use App\Models\Books;
    public function index()
    {
    $books = Books::all();
    return response()->json($books);
    }


    Wei­te­re Funk­tio­nen zum Lis­ten, Anle­gen und Löschen ein­zel­ner Daten­sät­ze ana­log als Funk­ti­on anlegen.
  12. Rou­ten von den API-URLs zu den Con­trol­ler-Funk­tio­nen in routes/web.php anle­gen, z.B. für die obi­ge Funk­ti­on

    Route::get("/books", [BooksController::class, "index"]);

    Hin­weis:
    In den meis­ten online-Bei­spie­len wird hier auf die Datei
    api.php ver­wie­sen, die aber beim crea­te-pro­ject nicht ange­legt wird. Wenn man sie selbst anlegt, wird sie nicht genutzt (die Rou­ten wer­den schein­bar nicht erzeugt - ein Auf­ruf hat einen 404 - Not foundFeh­ler zur Fol­ge, mit „php artisan route:list wer­den sie nicht angezeigt).
  13. Appli­ka­ti­on star­ten mit

    php arti­san ser­ve

    und im Brow­ser fol­gen­de URL auf­ru­fen

    http://localhost:8000/books

    Es soll­te eine Json-Struk­tur mit allen Daten­sät­zen der Tabel­le books ange­zeigt werden

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

13 + 4 =