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メソッド
getGET
postPOST
putPUT
deleteDELETE

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

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では正規表現でパスパラメータのバリデートチェックをすることができます。

idOKNG意味
{id:[0-9]+}123123a数値のみ
{id:[a-z]+}abcabc1小文字アルファベットのみ
{id:[0-9a-z]+}123abc123abcA数値と小文字アルファベットのみ
{id:[0-9]{4,8}}12341234文字以上8文字以下の数値のみ
{id:[0-9]{4,}}1234567891234文字以上の数値のみ
{id:[a-zA-Z]+}abcAAbc1大文字小文字のアルファベットのみ

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

Phalcon Documentation - Tutorial - REST
Official Phalcon Documentation

コメント

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