Heim  >  Artikel  >  Backend-Entwicklung  >  Erstellen einer Pokémon-API in PHP: Ein Leitfaden für Anfänger

Erstellen einer Pokémon-API in PHP: Ein Leitfaden für Anfänger

DDD
DDDOriginal
2024-09-13 06:27:021166Durchsuche

Building a Pokémon API in PHP: A Beginner

In diesem Leitfaden gehen wir die Schritte durch, um ein einfaches PHP-Projekt zu erstellen, das die Pokémon-API mit dem Flight-Framework und zusätzlichen Paketen wie Zebra_cURL und Latte verwendet. Wir werden uns mit der Einrichtung des Projekts, dem Hinzufügen von Routen und dem Rendern von Ansichten befassen.

tl;dr: Es ist nicht schwer, ein einfaches API-basiertes Projekt in Flight zu erstellen. Sehen Sie sich den in diesem Handbuch verwendeten Code an.

Schritt 1: Einrichten der Umgebung

Zuerst müssen wir einen neuen Projektordner einrichten. Öffnen Sie Ihr Terminal, navigieren Sie zum gewünschten Speicherort und führen Sie die folgenden Befehle aus, um ein neues Verzeichnis zu erstellen und es einzugeben.

mkdir flight-pokeapi
cd flight-pokeapi

Schritt 2: Composer installieren

Bevor wir uns mit dem Code befassen, müssen wir sicherstellen, dass Composer installiert ist. Composer ist der Abhängigkeitsmanager für PHP und hilft uns, die notwendigen Bibliotheken einzubinden.

Wenn Sie Composer nicht installiert haben, können Sie es wie folgt installieren:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Da Composer nun in einer aktuellen Datei namens ./composer.phar installiert ist, verwalten wir unsere Abhängigkeiten.

Schritt 3: Abhängigkeiten installieren

Um die erforderlichen Pakete zu verwalten, müssen wir sie nur mit Composer hinzufügen.

./composer.phar require flightphp/core stefangabos/zebra_curl latte/latte

Dadurch wird Folgendes installiert:

  • Flight PHP: Ein leichtes PHP-Framework.
  • Zebra_cURL: Ein cURL-Wrapper zur Verarbeitung von HTTP-Anfragen.
  • Latte: Eine Vorlagen-Engine zum Rendern von Ansichten.

Schritt 4: Einrichten von index.php

Als nächstes erstellen wir den Einstiegspunkt für unsere Anwendung: public/index.php. Diese Datei richtet unsere App ein, konfiguriert Routen und übernimmt das Rendern von Ansichten.

Erstellen Sie das öffentliche Verzeichnis und die Datei index.php:

mkdir public
touch public/index.php

Fügen Sie nun den folgenden Inhalt zu index.php hinzu:

<?php

use flight\net\Router;
use Latte\Engine;

require __DIR__ . '/../vendor/autoload.php'; // Autoload the installed packages

// Setup Latte for view rendering
$Latte = new Engine;
$Latte->setTempDirectory(__DIR__ . '/../temp');
Flight::map('render', function(string $template_path, array $data = []) use ($Latte) {
  $Latte->render(__DIR__ . '/../views/' . $template_path, $data);
});

// Setup Zebra_cURL for handling HTTP requests
$Curl = new Zebra_cURL();
$Curl->cache(__DIR__ . '/../temp');
Flight::map('curl', function() use ($Curl) { 
    return $Curl; 
});

// Define a simple route
Flight::route('/', function() {
  echo 'hello world!';
});

Flight::start();

In dieser Datei:

  • Wir laden den Autoloader von Composer.
  • Richten Sie Latte für das Rendern von Ansichten ein.
  • Ordnen Sie eine benutzerdefinierte Rendermethode zu, die Latte verwendet, um Vorlagen aus dem Ordner /views zu rendern.
  • Richten Sie Zebra_cURL ein, um API-Anfragen zu verarbeiten, und ordnen Sie es so zu, dass Flight::curl() verwendet wird, wenn wir es aufrufen möchten.
  • Definieren Sie eine einfache Route für die Homepage (/), die nur „Hallo Welt!“ zurückgibt.

Wenn Sie dieses Setup testen möchten, können Sie einen PHP-Server aus dem öffentlichen Verzeichnis starten:

php -S localhost:8000 -t public/

Besuchen Sie nun http://localhost:8000/ in Ihrem Browser und Sie sollten „Hallo Welt!“ sehen. Cool, oder?

Schritt 5: Routen hinzufügen

Da wir nun eine grundlegende Route eingerichtet haben, fügen wir eine komplexere Route hinzu, die die Pokémon-API verwendet. Aktualisieren Sie public/index.php, um den folgenden Code einzuschließen:

Flight::group('/pokemon', function(Router $router) {
    // Route to list all Pokémon types
    $router->get('/', function() {
        $types_response = json_decode(Flight::curl()->scrap('https://pokeapi.co/api/v2/type/', true));
        $results = [];
        while ($types_response->next) {
            $results = array_merge($results, $types_response->results);
            $types_response = json_decode(Flight::curl()->scrap($types_response->next, true));
        }
        $results = array_merge($results, $types_response->results);
        Flight::render('home.latte', [ 'types' => $results ]);
    });
});
  • Wir haben eine /pokemon-Routengruppe erstellt. Eine Routengruppe „umgibt“ die Routen und ermöglicht es uns, gemeinsame Funktionalität für alle Routen innerhalb der Gruppe zu definieren.
  • Die /pokemon-Route listet alle verfügbaren Pokémon-Typen auf, indem sie sie mit Zebra_cURL von der Pokémon-API abruft.
  • Das wird noch nicht funktionieren, da wir die home.latte-Ansicht hinzufügen müssen, um die Pokémon-Typen anzuzeigen.

Schritt 6: Ansichten mit Latte rendern

Da wir nun Daten abrufen, richten wir Ansichten ein, um sie anzuzeigen. Erstellen Sie das Ansichtenverzeichnis und fügen Sie eine Latte-Vorlagendatei zur Anzeige der Pokémon-Typen hinzu.

mkdir views
touch views/home.latte

Fügen Sie den folgenden Code zu „views/home.latte“ hinzu:

<p>Welcome to the Pokemon World!</p>

<p>Types of Pokemon</p>
<ul>
    {foreach $types as $type}
        <li><a href="/pokemon/type/{$type->name}">{$type->name|firstUpper}</a></li>
    {/foreach}
</ul>

In dieser Datei:

  • Wir durchlaufen das $types-Array, das von unserer Route übergeben wurde, und zeigen den Namen jedes Pokémon-Typs an.

Wenn Sie jetzt /pokemon aufrufen, wird eine Liste aller Pokémon-Typen angezeigt!

Schritt 7: Gruppieren und Hinzufügen weiterer Routen

Erweitern wir unsere Pokémon-Routen, um mehr Details zu bestimmten Typen und einzelnen Pokémon abzurufen. Fügen Sie die folgenden Routen zu Ihrer /pokemon-Gruppe hinzu:

// Route to fetch a specific Pokémon type and list all associated Pokémon
$router->get('/type/@type', function(string $type) {
    $Curl = Flight::curl();
    $type_response = json_decode($Curl->scrap('https://pokeapi.co/api/v2/type/' . $type, true));
    $pokemon_urls = [];
    foreach($type_response->pokemon as $pokemon_data) {
        $pokemon_urls[] = $pokemon_data->pokemon->url;
    }
    $pokemon_data = [];

    // The little & here is important to pass the variable by reference.
    // In other words it allows us to modify the variable inside the closure.
    $Curl->get($pokemon_urls, function(stdClass $result) use (&$pokemon_data) {
        $pokemon_data[] = json_decode($result->body);
    });

    Flight::render('type.latte', [ 
        'type' => $type_response->name,
        'pokemons' => $pokemon_data
    ]);
});

Auf dieser Route:

  • Rufen Sie Details für einen bestimmten Pokémon-Typ ab, einschließlich aller zugehörigen Pokémon.
  • Senden Sie mehrere API-Anfragen, um Details für jedes Pokémon abzurufen.
  • Rendern Sie die Daten mithilfe einer Vorlage (type.latte).

Als nächstes erstellen Sie die type.latte-Ansicht:

touch views/type.latte

Fügen Sie den folgenden Inhalt zu type.latte hinzu:

<h1>{$type|firstUpper}</h1>
<ul>
    {foreach $pokemons as $pokemon}
        <li><a href="/pokemon/{$pokemon->id}">{$pokemon->name|firstUpper}</a></li>
    {/foreach}
</ul>

Diese Vorlage zeigt den Namen jedes Pokémon an, das einem bestimmten Typ zugeordnet ist.

Schritt 8: Funktioniert es?

Zu diesem Zeitpunkt haben Sie einen grundlegenden Pokémon-API-Konsumenten eingerichtet, der Flight PHP, Zebra_cURL für API-Anfragen und Latte für das Rendern von Ansichten verwendet. Sie können dieses Projekt weiter ausbauen, indem Sie weitere Routen hinzufügen und die Vorlagen verfeinern.

Um Ihr Projekt anzuzeigen, starten Sie den PHP-Server aus dem öffentlichen Verzeichnis:

php -S localhost:8000 -t public/

Besuchen Sie nun http://localhost:8000/pokemon in Ihrem Browser und Sie sollten eine Liste der Pokémon-Typen sehen.

Fehlerbehebung

Wenn Sie Hilfe benötigen oder auf Probleme stoßen, können Sie den vollständigen Code in Github überprüfen, um zu sehen, wo Sie möglicherweise einen Fehltritt gemacht haben.

Hoffentlich hat Ihnen dieses kleine Tutorial gefallen. Wenn Sie Fragen haben oder Hilfe benötigen, können Sie diese gerne in den Kommentaren unten stellen. Viel Spaß beim Codieren!

Das obige ist der detaillierte Inhalt vonErstellen einer Pokémon-API in PHP: Ein Leitfaden für Anfänger. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn