2

現在、RESTful API を設計していますが、ページネーション情報を公開する方法について質問があります。

Github や Firefox Market Place のようないくつかの有名なサービスは、API に以下のようなものを持っているようです:

{
"meta": {
    "limit": 3,
    "next": "/api/v1/apps/category/?limit=3&offset=6",
    "offset": 3,
    "previous": "/api/v1/apps/category/?limit=3&offset=0",
    "total_count": 16
    }
}

私の質問は:

サーバーが応答で完全な次/前の URL を提供する必要があるのはなぜですか?

クライアントが最初のリクエストを行っているように私には思えます。そのため、呼び出しに使用したパラメーター (オフセット/制限/API バージョン) を認識しています。クライアントが次/前の URL を呼び出すのは簡単です。冗長な URL をわざわざ計算してクライアントに渡す必要があるのはなぜですか?

4

1 に答える 1

3

それはRESTfulです!これは特にHATEOAS、つまりアプリケーション状態のエンジンとしてのハイパーメディアの一部です。

アプリケーションへの単純な固定エントリ ポイントを除いて、クライアントは、サーバーから以前に受信した表現で説明されているものを超えて、特定のリソースに対して特定のアクションが利用可能であると想定しません。

と:

[HATEOAS] は、他のほとんどのネットワーク アプリケーション アーキテクチャと区別される REST アプリケーション アーキテクチャの制約です。原則として、クライアントは、アプリケーション サーバーによって動的に提供されるハイパーメディアを介してネットワーク アプリケーションと対話します。REST クライアントは、特定のアプリケーションまたはサーバーと対話する方法について、ハイパーメディアの一般的な理解を超えた予備知識は必要ありません。
...
REST クライアントは、単純な固定 URL を介して REST アプリケーションに入ります。クライアントが実行する可能性のある今後のすべてのアクションは、サーバーから返されたリソース表現内で検出されます。

(強調を追加)

クライアントが最初のリクエストを行っているように私には思えます。そのため、呼び出しに使用したパラメーター (オフセット/制限/API バージョン) を認識しています。

はい、クライアントが最初のリクエストを行いますが、それは URL の検出、ページネーション、制限/オフセット パラメータなどについて何も知らないという意味ではありません。

于 2013-06-25T02:27:18.023 に答える