Phalcon3でPhalcon\Mvc\Microクラスを使用してRESTful APIを作ってみる

Phalcon3でPhalcon\Mvc\Microクラスを使用してRESTful APIを作ってみる

公式のチュートリアルにあるようにREST APIを作成する場合はマイクロアプリケーションで作成してみます。

public\index.phpを以下のように書き換えます。


<?php
declare(strict_types=1);
use Phalcon\Di\FactoryDefault;
use Phalcon\Mvc\Micro;
error_reporting(E_ALL);
define('BASE_PATH', dirname(__DIR__));
define('APP_PATH', BASE_PATH . '/app');
try {
$di = new FactoryDefault();
include APP_PATH . '/config/router.php';
include APP_PATH . '/config/services.php';
$config = $di->getConfig();
include APP_PATH . '/config/loader.php';
// add start
$app = new Micro();
$app->get(
'/api/robots',
function () {
// 実装
}
);
$app->handle(
$_SERVER["REQUEST_URI"]
);
// add end
} catch (\Exception $e) {
echo $e->getMessage() . '<br>';
echo '<pre>' . $e->getTraceAsString() . '</pre>';
}
view raw

gistfile1.txt

hosted with ❤ by GitHub

use Phalcon\Mvc\Micro;宣言するのを忘れないでください。

メソッドの対応は以下の通りです。

メソッド HTTPメソッド
get GET
post POST
put PUT
delete DELETE

実装部分に返却するデータを書きます。

GETメソッド

getメソッドを使用してJSON形式でデータを返却してみます。

上記のindex.phpでいうfunction部分を実装するだけです。


// add start
$app = new Micro();
$app->get(
'/api/v2/getData',
function () {
$ret = [
'name' => 'yamada',
'id' => 20
];
echo json_encode($ret);
}
);
$app->handle(
$_SERVER["REQUEST_URI"]
);
// add end
view raw

gistfile1.txt

hosted with ❤ by GitHub

function部でjson_encodeして返しているだけです。

http://localhost:8000/api/v2/getDataにGETメソッドでアクセスするとJSONが返ってきます。

Phalcon3でPhalcon\Mvc\Microクラスを使用してRESTful APIを作ってみる

POSTメソッド

HTTPのPOSTを使用したい場合はpostメソッドを使用します。


// add start
$app = new Micro();
$app->post(
'/api/v2/getData',
function () {
$ret = [
'name' => 'yamada',
'id' => 20
];
echo json_encode($ret);
}
);
$app->handle(
$_SERVER["REQUEST_URI"]
);
// add end
view raw

gistfile1.txt

hosted with ❤ by GitHub

PUTメソッド

HTTPのPUTを使用したい場合はputメソッドを使用します。


// add start
$app = new Micro();
$app->put(
'/api/v2/getData',
function () {
$ret = [
'name' => 'yamada',
'id' => 20
];
echo json_encode($ret);
}
);
$app->handle(
$_SERVER["REQUEST_URI"]
);
// add end
view raw

gistfile1.txt

hosted with ❤ by GitHub

DELETEメソッド

HTTPのDELETEを使用したい場合はdeleteメソッドを使用します。


// add start
$app = new Micro();
$app->delete(
'/api/v2/getData',
function () {
$ret = [
'name' => 'yamada',
'id' => 20
];
echo json_encode($ret);
}
);
$app->handle(
$_SERVER["REQUEST_URI"]
);
// add end
view raw

gistfile1.txt

hosted with ❤ by GitHub

パスパラメータのバリデーション

Phalcon3では正規表現でパスパラメータのバリデートチェックをすることができます。

id OK NG 意味
{id:[0-9]+} 123 123a 数値のみ
{id:[a-z]+} abc abc1 小文字アルファベットのみ
{id:[0-9a-z]+} 123abc 123abcA 数値と小文字アルファベットのみ
{id:[0-9]{4,8}} 1234 123 4文字以上8文字以下の数値のみ
{id:[0-9]{4,}} 123456789 123 4文字以上の数値のみ
{id:[a-zA-Z]+} abcA Abc1 大文字小文字のアルファベットのみ

今回はAPIの確認でしたが、次回はモデルを使ったデータベースにアクセスするAPIを作成したいと思います。

Phalcon Documentation - Tutorial - REST
Official Phalcon Documentation

コメント

タイトルとURLをコピーしました