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>'; | |
} |
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 |
function部でjson_encodeして返しているだけです。
http://localhost:8000/api/v2/getDataにGETメソッドでアクセスするとJSONが返ってきます。
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 |
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 |
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 |
パスパラメータのバリデーション
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を作成したいと思います。
https://docs.phalcon.io/4.0/en/tutorial-rest.html
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^