이 가이드에서는 Flight 프레임워크 및 Zebra_cURL 및 Latte와 같은 추가 패키지와 함께 Pokémon API를 사용하는 기본 PHP 프로젝트를 생성하는 단계를 안내합니다. 프로젝트 설정, 경로 추가 및 뷰 렌더링을 살펴보겠습니다.
tl;dr: Flight에서 간단한 API 기반 프로젝트를 만드는 것은 어렵지 않습니다. 이 가이드에 사용된 코드를 확인해 보세요.
먼저 새 프로젝트 폴더를 설정해야 합니다. 터미널을 열고 원하는 위치로 이동한 후 다음 명령을 실행하여 새 디렉터리를 만들고 입력하세요.
mkdir flight-pokeapi cd flight-pokeapi
코드를 살펴보기 전에 Composer가 설치되어 있는지 확인해야 합니다. Composer는 PHP의 종속성 관리자이며 필요한 라이브러리를 포함하는 데 도움이 됩니다.
Composer가 설치되어 있지 않은 경우 다음을 사용하여 설치할 수 있습니다.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php php -r "unlink('composer-setup.php');"
이제 Composer가 ./composer.phar라는 현재 파일에 설치되었으므로 종속성을 관리해 보겠습니다.
필요한 패키지를 관리하려면 Composer로 추가하기만 하면 됩니다.
./composer.phar require flightphp/core stefangabos/zebra_curl latte/latte
설치 대상:
다음으로 애플리케이션의 진입점인 public/index.php를 만들어 보겠습니다. 이 파일은 앱을 설정하고, 경로를 구성하고, 뷰 렌더링을 처리합니다.
공용 디렉터리와 index.php 파일을 만듭니다.
mkdir public touch public/index.php
이제 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();
이 파일의 내용:
이 설정을 테스트하려면 공개 디렉토리에서 PHP 서버를 시작할 수 있습니다.
php -S localhost:8000 -t public/
이제 브라우저에서 http://localhost:8000/을 방문하면 "hello world!"가 표시됩니다. 멋지죠?
이제 기본 경로가 설정되었으므로 Pokémon API를 사용하는 더 복잡한 경로를 추가해 보겠습니다. 다음 코드를 포함하도록 public/index.php를 업데이트하세요.
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 ]); }); });
이제 데이터를 가져왔으니 이를 표시할 뷰를 설정해 보겠습니다. views 디렉토리를 생성하고 포켓몬 유형을 표시하기 위한 Latte 템플릿 파일을 추가합니다.
mkdir views touch views/home.latte
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>
이 파일의 내용:
이제 /pokemon에 접속하면 모든 포켓몬 종류의 목록이 표시됩니다!
특정 유형과 개별 포켓몬에 대한 자세한 정보를 가져오기 위해 포켓몬 경로를 확장해 보겠습니다. /pokemon 그룹에 다음 경로를 추가하세요:
// 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 ]); });
이 경로에서 우리는:
다음으로 type.latte 뷰를 만듭니다.
touch views/type.latte
type.latte에 다음 콘텐츠를 추가하세요.
<h1>{$type|firstUpper}</h1> <ul> {foreach $pokemons as $pokemon} <li><a href="/pokemon/{$pokemon->id}">{$pokemon->name|firstUpper}</a></li> {/foreach} </ul>
이 템플릿은 특정 유형과 관련된 각 포켓몬의 이름을 표시합니다.
이제 Flight PHP, API 요청용 Zebra_cURL, 뷰 렌더링용 Latte를 사용하여 기본 Pokémon API 소비자가 설정되었습니다. 더 많은 경로를 추가하고 템플릿을 수정하여 이 프로젝트를 더욱 확장할 수 있습니다.
프로젝트를 보려면 공개 디렉토리에서 PHP 서버를 시작하세요.
php -S localhost:8000 -t public/
이제 브라우저에서 http://localhost:8000/pokemon을 방문하면 포켓몬 유형 목록이 표시됩니다.
도움이 필요하거나 문제가 발생한 경우 Github에서 전체 코드를 확인하여 실수한 부분을 확인할 수 있습니다.
이 작은 튜토리얼이 도움이 되셨기를 바랍니다. 질문이 있거나 도움이 필요하시면 아래 댓글로 언제든지 문의해 주세요. 즐거운 코딩하세요!
위 내용은 PHP로 Pokémon API 구축: 초보자 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!