1. ホーム
  2. rest

[解決済み] REST Web アプリケーションのページネーション

2022-03-17 11:23:13

質問

のより一般的な再定式化です。 この質問 (Rails特有の部分を削除して)

RESTfulなWebアプリケーションで、リソースにページネーションを実装する方法がよくわかりません。 というリソースがあると仮定します。 products また、その理由も教えてください。

1. クエリ文字列のみを使用する

http://application/products?page=2&sort_by=date&sort_how=asc
この問題は、フルページキャッシングが使えないことと、URLがあまりきれいで覚えやすいものではないことです。

2. ページをリソースとして使用し、クエリ文字列で振り分けを行う

http://application/products/page/2?sort_by=date&sort_how=asc
この場合、見えている問題点は http://application/products/pages/1 を使用するため、一意なリソースではありません。 sort_by=price は全く異なる結果をもたらすことができます やはりページキャッシングは使えない。

3. ページをリソースとして使用し、振り分け用のURLセグメントを使用する

http://application/products/by-date/page/2
私自身はこの方法で問題ないと思っていますが、ある人からこの方法は良くないと警告されました(理由は書いてなかったので、ご存知の方は教えてください)。 何故 を推奨していませんので、教えてください。)

任意の ご意見、ご感想、批評をお待ちしています。ありがとうございます。

解決方法は?

バージョン3の問題は、ページをリソースとして見るか、ページ上の製品をリソースとして見るかという、視点(quot;point of view")の問題だと思います。

もし、ページをリソースとして見るのであれば、ページ2に対するクエリーは常にページ2を返すので、全く問題ない解決策です。

しかし、ページ上の製品をリソースとして見た場合、2ページ目の製品が変更される可能性があるという問題があります(古い製品が削除されたり、何でも)、この場合、URIは常に は同じリソースを返します。

例:顧客が商品一覧ページXへのリンクを保存した場合、次にそのリンクを開いたときには、当該商品はもはやページXに存在しないかもしれない。