3

Slim フレームワークを使用してモバイル アプリ用の REST API を作成してきました。現在、index.php は Web ルート内のフォルダー v1/ 内にあります。この index.php にはすべての API が含まれています。

ただし、新しいバージョンのモバイル アプリでは、同じ API エンドポイントに対してわずかに異なる応答が必要になるため、簡単にスケーリングできる API のバージョン管理が必要です。それぞれが index.php を持つ異なるフォルダー (v2、v3 など) を使用したくありません。

理想的には、「おそらく」単一の index.php ファイルが存在する必要があり、新しい API バージョン vX を追加する必要があるとしましょう。変更は共通 API の 1 つだけにある可能性があります。コードの変更を希望します。最小限にするために、その API 関数のみに制限することができ、他のいくつかの場所に制限することができます (他のすべての API に対してこの新しいバージョンを有効にするため)。

新しいバージョンを簡単に追加できるように、これを達成するための簡単で短い方法はありますか? これは一般的にどのように行うべきですか?

編集1:

以下は、この問題を解決するための「潜在的な」解決策です。問題点やより良い解決策を自由に指摘してください。

これを実現するために、条件 (アプリケーション全体のルート条件) を使用することにしました。

<?php
\Slim\Route::setDefaultConditions(array(
    'apiVersion' => '[1-29]'       /* indicates integer API version between 1 and 29 */
));

API バージョン 1 ~ 29 をサポートするすべての API (まったく同じ処理)

$app = new \Slim\Slim();
$app->get('/:apiVersion/API_A/:lastName', $callableA)
    ->conditions(array('lastName' => '[a-z]{10,}'));

バージョン 1 ~ 21 とバージョン 22 ~ 29 で異なる API

$app->get('/:apiVersion/API_B, $callableB1)
    ->conditions(array('apiVersion' => '[1-21]'));
$app->get('/:apiVersion/API_B, $callableB2)
    ->conditions(array('apiVersion' => '[22-29]'));

したがって、数百の API があり、API の新しいバージョン 30 用に 3 つの API を変更する必要がある場合、API_B に対して上記で行ったようにこれら 3 つの API を変更し、apiVersion のアプリケーション全体のルート条件を変更するだけです。 .

4

0 に答える 0