PHP:オプションと必須のパラメーターのスリムな組み合わせ

Naitik Ku​​ndalia

次のようなルートが欲しいです。

$app->get('/FetchImages/{catid}[/{subcatid}]/{page}', function ($request, $response, $args) {
    //Code
});

ルートで私は以下をしたい:

  • カテゴリ-必須
  • SubCategory-オプション
  • ページ-必須

1つのルートでそれを行うことはできますか?もしそうなら、それはどのように達成できますか?これらのパスに対して1つの関数が必要です。

{catid}/{page}
{catid}/{subcatid}/{page}
ゲオルギー・イワノフ

オプションの後に必須のプレースホルダーを配置することはできません。試してみると、fastRoute(ルーター、Slimで使用)はエラーになります。

また、SlimとfastRouteから抽象化したとしても、APIのURL構造を再検討することをお勧めします。必須が最初に来て、オプションが後で来るのは当然です。

ルートに同じコールバックを使用できるようにするにはpage、クエリパラメータとして渡すことをお勧めします。

$this->get('/FetchImages/{categoryId}[/{subcategoryId}]', function($request, $response, $args) {

    $categoryId = $args['categoryId'];
    $subcategoryId = $args['subcategoryId'];

    //  Get requested page value.
    //  It defaults to null if no page specified
    $page = $request->getQueryParam('page', null);

});

そして、次のようなリクエストを送信します。

GET http://myapp.com/FetchImages/kittens/dangerous?page=2

この場合、ページを自由に通過またはスキップでき、URL構造は依然として非常にクリーンです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

デザインパターン:httpリクエストとプラグイン可能なRedisキャッシングメカニズムの組み合わせ

分類Dev

OpenAPI:必須フィールド、オプションフィールド、および指定されていないフィールドの組み合わせ

分類Dev

Ajax searchproの詳細オプション-カスタムフィールドと用語の組み合わせ

分類Dev

RazorPageルートでオプションのハンドラーとパラメーターを組み合わせる

分類Dev

TypeScriptが必須パラメーターの後にオプションのパラメーターを必要とするのはなぜですか?

分類Dev

他のすべての必須/オプションのパラメーター(存在する場合)をデフォルト値と同じに保つことによって、オプションのパラメーターのみをPHP関数に渡すにはどうすればよいですか?

分類Dev

Java 8オプション、ステートメントの組み合わせ

分類Dev

kafkaストリームインスタンスでのステートストアとパーティションの組み合わせ

分類Dev

キーを押す組み合わせでオプションを切り替えるBashのインタラクティブなスクリプト?

分類Dev

ズームパンスライドショーとFFMPEGの透かしオーバーレイの組み合わせ

分類Dev

SSRS必須パラメーターとオプションパラメーター

分類Dev

r:すべての可能なオプションと変数の組み合わせの数を使用してデータフレームを作成します

分類Dev

大規模なユーザーベースのPHPアプリケーションに最適なec2インスタンスファミリーとインスタンスタイプの組み合わせ

分類Dev

Spring MVCアプリケーションでJqueryを使用して複数のパラメーターのAjax stringifyリクエストを送信しているときに、必須の文字列パラメーター 'querycontent'が存在しない

分類Dev

テンプレートとそのテンプレートメンバーのテンプレートパラメータリストを組み合わせることができないのはなぜですか?

分類Dev

非推奨:必須パラメーター$ to_addrはオプションの後に続きます

分類Dev

Rails コントローラー: オプションと必須のパラメーターをどのように説明しますか?

分類Dev

TypeScript-2つのインターフェースを組み合わせ、そのメンバーの一部を必須にする

分類Dev

PHPストリーム:オプションとパラメーターの違い

分類Dev

無効なパラメーターの組み合わせAWS

分類Dev

ネオンアニメーションページと組み合わせて紙のタブを使用する

分類Dev

URLのオプションパラメータ-スリム3

分類Dev

Powershell関数-パラメーターは、ある場合には必須であり、別の場合はオプションである必要があります

分類Dev

オプション付き/オプションなしのBASHスクリプトとパラメーター

分類Dev

データフレームとシリーズのパンダの組み合わせ

分類Dev

Rubyでスプラットの後に必須パラメーターを設定できるのに、オプションのパラメーターを設定できないのはなぜですか?

分類Dev

警告:[オプション] -source 1.5と組み合わせて設定されていないブートストラップクラスパス

分類Dev

少なくとも1つのオプションのパラメーターの存在を必須にしようとしていますが、その存在は他のパラメーターを除外します

分類Dev

Web API-HTTP動詞/パラメーターの組み合わせごとに1つのアクションのみ?

Related 関連記事

  1. 1

    デザインパターン:httpリクエストとプラグイン可能なRedisキャッシングメカニズムの組み合わせ

  2. 2

    OpenAPI:必須フィールド、オプションフィールド、および指定されていないフィールドの組み合わせ

  3. 3

    Ajax searchproの詳細オプション-カスタムフィールドと用語の組み合わせ

  4. 4

    RazorPageルートでオプションのハンドラーとパラメーターを組み合わせる

  5. 5

    TypeScriptが必須パラメーターの後にオプションのパラメーターを必要とするのはなぜですか?

  6. 6

    他のすべての必須/オプションのパラメーター(存在する場合)をデフォルト値と同じに保つことによって、オプションのパラメーターのみをPHP関数に渡すにはどうすればよいですか?

  7. 7

    Java 8オプション、ステートメントの組み合わせ

  8. 8

    kafkaストリームインスタンスでのステートストアとパーティションの組み合わせ

  9. 9

    キーを押す組み合わせでオプションを切り替えるBashのインタラクティブなスクリプト?

  10. 10

    ズームパンスライドショーとFFMPEGの透かしオーバーレイの組み合わせ

  11. 11

    SSRS必須パラメーターとオプションパラメーター

  12. 12

    r:すべての可能なオプションと変数の組み合わせの数を使用してデータフレームを作成します

  13. 13

    大規模なユーザーベースのPHPアプリケーションに最適なec2インスタンスファミリーとインスタンスタイプの組み合わせ

  14. 14

    Spring MVCアプリケーションでJqueryを使用して複数のパラメーターのAjax stringifyリクエストを送信しているときに、必須の文字列パラメーター 'querycontent'が存在しない

  15. 15

    テンプレートとそのテンプレートメンバーのテンプレートパラメータリストを組み合わせることができないのはなぜですか?

  16. 16

    非推奨:必須パラメーター$ to_addrはオプションの後に続きます

  17. 17

    Rails コントローラー: オプションと必須のパラメーターをどのように説明しますか?

  18. 18

    TypeScript-2つのインターフェースを組み合わせ、そのメンバーの一部を必須にする

  19. 19

    PHPストリーム:オプションとパラメーターの違い

  20. 20

    無効なパラメーターの組み合わせAWS

  21. 21

    ネオンアニメーションページと組み合わせて紙のタブを使用する

  22. 22

    URLのオプションパラメータ-スリム3

  23. 23

    Powershell関数-パラメーターは、ある場合には必須であり、別の場合はオプションである必要があります

  24. 24

    オプション付き/オプションなしのBASHスクリプトとパラメーター

  25. 25

    データフレームとシリーズのパンダの組み合わせ

  26. 26

    Rubyでスプラットの後に必須パラメーターを設定できるのに、オプションのパラメーターを設定できないのはなぜですか?

  27. 27

    警告:[オプション] -source 1.5と組み合わせて設定されていないブートストラップクラスパス

  28. 28

    少なくとも1つのオプションのパラメーターの存在を必須にしようとしていますが、その存在は他のパラメーターを除外します

  29. 29

    Web API-HTTP動詞/パラメーターの組み合わせごとに1つのアクションのみ?

ホットタグ

アーカイブ