私の知る限り、REST Web サービスの特徴はリソースの概念です。リソースとその CRUD 操作を中心にすべてをローテーションする必要があります。1 つのリソースがプレーヤーリソースであるとします。リンクhttp://mydomain.com/players.xmlでプレーヤーのリストを取得でき、5 番目のプレーヤーはhttp://mydomain.com/players/5.xmlで到達可能です。など、適切な HTTP メソッドを使用して、さまざまな CRUD アクションを実行できます。
クライアント側の問題は次のとおりです。プレイヤーのスコアを含むテーブルを表示する必要がある場合はどうすればよいでしょうか (このテーブルはオンザフライで構築され、プレイヤーの DB テーブルにクエリを実行すると想定できます)。私の希望では、このテーブルは実際のリソースではありません (テーブルを削除することも、新しいテーブルを編集または追加することもできません)。
次に、本当の質問は (私が CakePHP フレームワークを使用していることを考慮して) です: プレーヤーのコントローラーの RESTish スタイルを壊すことなく、プレーヤーのテーブルを作成するにはどうすればよいですか?
私の最初のアイデアは:プレーヤー コントローラーのgetTable()
既存の 4 つの CRUD メソッド ( index()
、view()
、edit()
およびdelete()
) にメソッドを追加routes.php
し、すべての REST API がrest
パス (つまりhttp://mydomain.com/rest/players /5.xml ) 一方、RESTFUL 以外の他のすべてのサービスはnonrest
パス (つまり、 http://mydomain.com/nonrest/players/getTableまたはhttp://mydomain.com/nonrest/players/getTable.xml )で到達可能です。 . このようにして、API のクライアントは、rest
パスの下で REST パラダイムが尊重されていることを確実に知ることができます。良い解決策はありますか?他に何か考えはありますか?