Rumah > Artikel > pembangunan bahagian belakang > Membina API Pokémon dalam PHP: Panduan Pemula
Dalam panduan ini, kami akan melalui langkah-langkah untuk mencipta projek PHP asas yang menggunakan API Pokémon dengan rangka kerja Penerbangan dan pakej tambahan seperti Zebra_cURL dan Latte. Kami akan meneroka penyediaan projek, menambah laluan dan memaparkan paparan.
tl;dr: Tidak sukar untuk membuat projek berasaskan API mudah dalam Penerbangan. Lihat kod yang digunakan dalam panduan ini.
Pertama, kita perlu menyediakan folder projek baharu. Buka terminal anda, navigasi ke lokasi yang anda inginkan dan jalankan arahan berikut untuk mencipta direktori baharu dan masukkannya.
mkdir flight-pokeapi cd flight-pokeapi
Sebelum kita menyelami kod, kita perlu memastikan bahawa Komposer dipasang. Komposer ialah pengurus pergantungan untuk PHP dan ia akan membantu kami memasukkan perpustakaan yang diperlukan.
Jika anda tidak memasang Komposer, anda boleh memasangnya menggunakan:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php php -r "unlink('composer-setup.php');"
Sekarang Komposer dipasang dalam fail semasa yang dipanggil ./composer.phar, mari urus kebergantungan kami.
Untuk mengurus pakej yang diperlukan, kami hanya perlu menambahkannya dengan komposer.
./composer.phar require flightphp/core stefangabos/zebra_curl latte/latte
Ini akan memasang:
Seterusnya, mari buat titik masuk untuk aplikasi kami: public/index.php. Fail ini akan menyediakan apl kami, mengkonfigurasi laluan dan mengendalikan pemaparan paparan.
Buat direktori awam dan fail index.php:
mkdir public touch public/index.php
Sekarang tambah kandungan berikut pada index.php:
<?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();
Dalam fail ini:
Jika anda ingin menguji persediaan ini, anda boleh memulakan pelayan PHP dari direktori awam:
php -S localhost:8000 -t public/
Sekarang, lawati http://localhost:8000/ dalam penyemak imbas anda, dan anda sepatutnya melihat "hello world!". Sejuk eh?
Sekarang kita telah menyediakan laluan asas, mari tambahkan laluan yang lebih kompleks yang menggunakan API Pokémon. Kemas kini public/index.php untuk memasukkan kod berikut:
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 ]); }); });
Sekarang kita sedang mengambil data, mari kita sediakan paparan untuk memaparkannya. Cipta direktori pandangan dan tambahkan fail templat Latte untuk memaparkan jenis Pokémon.
mkdir views touch views/home.latte
Tambahkan kod berikut pada views/home.latte:
<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>
Dalam fail ini:
Kini, melawati /pokemon akan memaparkan senarai semua jenis Pokémon!
Mari panjangkan laluan Pokémon kami untuk mendapatkan butiran lanjut untuk jenis tertentu dan Pokémon individu. Tambahkan laluan berikut pada kumpulan /pokemon anda:
// 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 ]); });
Dalam laluan ini, kami:
Seterusnya, buat paparan type.latte:
touch views/type.latte
Tambah kandungan berikut untuk menaip.latte:
<h1>{$type|firstUpper}</h1> <ul> {foreach $pokemons as $pokemon} <li><a href="/pokemon/{$pokemon->id}">{$pokemon->name|firstUpper}</a></li> {/foreach} </ul>
Templat ini memaparkan nama setiap Pokémon yang dikaitkan dengan jenis tertentu.
Pada ketika ini, anda telah menyediakan pengguna API Pokémon asas menggunakan Flight PHP, Zebra_cURL untuk permintaan API dan Latte untuk pemaparan paparan. Anda boleh mengembangkan lagi projek ini dengan menambah lebih banyak laluan dan memperhalusi templat.
Untuk melihat projek anda, mulakan pelayan PHP dari direktori awam:
php -S localhost:8000 -t public/
Sekarang, lawati http://localhost:8000/pokemon dalam penyemak imbas anda, dan anda akan melihat senarai jenis Pokémon.
Jika anda memerlukan bantuan atau menghadapi masalah, anda boleh menyemak kod penuh dalam Github untuk melihat di mana anda mungkin telah tersilap langkah.
Semoga anda menikmati tutorial kecil ini. Jika anda mempunyai sebarang soalan atau memerlukan bantuan, jangan ragu untuk bertanya dalam komen di bawah. Selamat mengekod!
Atas ialah kandungan terperinci Membina API Pokémon dalam PHP: Panduan Pemula. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!