>백엔드 개발 >PHP 튜토리얼 >PHP로 Pokémon API 구축: 초보자 가이드

PHP로 Pokémon API 구축: 초보자 가이드

DDD
DDD원래의
2024-09-13 06:27:021208검색

Building a Pokémon API in PHP: A Beginner

이 가이드에서는 Flight 프레임워크 및 Zebra_cURL 및 Latte와 같은 추가 패키지와 함께 Pokémon API를 사용하는 기본 PHP 프로젝트를 생성하는 단계를 안내합니다. 프로젝트 설정, 경로 추가 및 뷰 렌더링을 살펴보겠습니다.

tl;dr: Flight에서 간단한 API 기반 프로젝트를 만드는 것은 어렵지 않습니다. 이 가이드에 사용된 코드를 확인해 보세요.

1단계: 환경 설정

먼저 새 프로젝트 폴더를 설정해야 합니다. 터미널을 열고 원하는 위치로 이동한 후 다음 명령을 실행하여 새 디렉터리를 만들고 입력하세요.

mkdir flight-pokeapi
cd flight-pokeapi

2단계: Composer 설치

코드를 살펴보기 전에 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라는 현재 파일에 설치되었으므로 종속성을 관리해 보겠습니다.

3단계: 종속성 설치

필요한 패키지를 관리하려면 Composer로 추가하기만 하면 됩니다.

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

설치 대상:

  • Flight PHP: 경량 PHP 프레임워크
  • Zebra_cURL: HTTP 요청을 처리하기 위한 cURL 래퍼
  • Latte: 뷰 렌더링을 위한 템플릿 엔진

4단계: index.php 설정

다음으로 애플리케이션의 진입점인 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();

이 파일의 내용:

  • Composer의 오토로더를 로드합니다.
  • 렌더링 뷰를 위해 Latte를 설정하세요.
  • Latte를 사용하여 /views 폴더의 템플릿을 렌더링하는 사용자 정의 렌더링 방법을 매핑합니다.
  • API 요청을 처리하고 호출하려는 경우 Flight::curl()을 사용하도록 매핑하도록 Zebra_cURL을 설정합니다.
  • "hello world!"만 반환하는 홈페이지(/)에 대한 간단한 경로를 정의하세요.

이 설정을 테스트하려면 공개 디렉토리에서 PHP 서버를 시작할 수 있습니다.

php -S localhost:8000 -t public/

이제 브라우저에서 http://localhost:8000/을 방문하면 "hello world!"가 표시됩니다. 멋지죠?

5단계: 경로 추가

이제 기본 경로가 설정되었으므로 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 ]);
    });
});
  • /포켓몬 루트 그룹을 만들었습니다. 경로 그룹은 경로를 "둘러싸며" 그룹 내의 모든 경로에 대한 공통 기능을 정의할 수 있게 해줍니다.
  • /pokemon 경로는 Zebra_cURL을 사용하여 Pokémon API에서 가져와 사용 가능한 모든 포켓몬 유형을 나열합니다.
  • 포켓몬 유형을 표시하려면 home.latte 보기를 추가해야 하므로 아직은 작동하지 않습니다.

6단계: Latte를 사용하여 뷰 렌더링

이제 데이터를 가져왔으니 이를 표시할 뷰를 설정해 보겠습니다. 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>

이 파일의 내용:

  • 라우트에서 전달된 $types 배열을 반복하여 각 포켓몬 유형의 이름을 표시합니다.

이제 /pokemon에 접속하면 모든 포켓몬 종류의 목록이 표시됩니다!

7단계: 경로 그룹화 및 추가

특정 유형과 개별 포켓몬에 대한 자세한 정보를 가져오기 위해 포켓몬 경로를 확장해 보겠습니다. /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
    ]);
});

이 경로에서 우리는:

  • 관련된 모든 포켓몬을 포함하여 특정 포켓몬 유형에 대한 세부정보를 가져옵니다.
  • 여러 API 요청을 보내 각 포켓몬에 대한 세부정보를 가져옵니다.
  • 템플릿(type.latte)을 사용하여 데이터를 렌더링합니다.

다음으로 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>

이 템플릿은 특정 유형과 관련된 각 포켓몬의 이름을 표시합니다.

8단계: 작동하나요?

이제 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.