0

私の知る限り、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 パラダイムが尊重されていることを確実に知ることができます。良い解決策はありますか?他に何か考えはありますか?

4

1 に答える 1

2

nonrest別の階層は必要ありません。にまったく問題はありませんhttp://mydomain.com/players/5/score.xml。リソースが読み取り専用であるからといって、それがリソース以外のものになるわけではありません。

于 2013-01-29T00:45:14.007 に答える