拡張機能研究所

おすすめのブラウザ拡張機能をマンガ形式で紹介!

2025/08/30 15:00

API設計でやりがちな「最初のレスポンスがデータなし問題」って知ってる?

APIのページネーションで、最初のレスポンスにデータがなくてトークンだけ返す設計は結構ストレス。 余計な通信が増えてしまう理由を、実体験も交えてわかりやすく解説します。

なんとなくそう思ってたけど、APIのページネーションで最初の返事がデータなしでページトークンだけって、結構不便じゃない?💭

わたしも最近、そんなAPIを使う機会があって「え、これって本当に必要?」ってなっちゃったんだよね😳


ページネーションの基本って?

たとえば、SNSの投稿とか大量の情報を一気に全部送ると重くなるから、ちょっとずつ分けて渡すのがページネーション✨
普通は、最初のリクエストでちゃんとデータと次のページを呼ぶためのトークンをセットで返してくれるパターンが多いんだよね🌸


でも、最初に「データなし、次のページの場所だけ」ってどうなの?

実は、わたしが触ったAPIは最初の返答にデータがなくて、次のページだけ教えてくる設計だったの!
それで結局、何度もリクエスト送らなきゃいけなくて、すごく効率悪かったんだ〜😵‍💫

なんでそんなことするんだろう?って思ったけど、たぶん中の処理や設計の都合なんだろうね。でもユーザー目線で見ると「最初からちょっとでもデータを返してくれたら余計な通信が減るのに!」って感じちゃうよね💡


無駄なリクエストは避けたいよね💭

こういうのって小さなことだけど、APIを使う側にとっては地味にストレスになるポイントだったりするんだ✨
一回の通信が増えるだけで、アプリの動きが遅くなったり、ユーザーに影響が出たりするから…😳


まとめ💗

  • APIのページネーションは、最初のレスポンスにデータと次のページ情報をセットで返すのが親切
  • 最初にデータがないと余計なリクエストが増えて非効率になる
  • 使う側のことをちょっと想像して設計すると、みんなハッピーになるよね✨

API作る人にはぜひ覚えておいてほしいポイントだな~って思った話でした🫶

ひとことアニメーション表示ON
なんで最初からこうしないのー💢

コメント

アバター

ベン

こんなの見たことないけど、ページネーションって普通はリクエストにクエリつけるもんじゃないの? 何も指定しなければ最初の100件くらい返すとか? どんな感じ?

アバター

ハンナ

10年開発してるけど見たことないな、働く人変えたほうがいいんじゃ?

アバター

クリス

APIに人間認証つけたよ。 認証ヘッダーに好きなサンドイッチと色入れてもらって、それでトークン生成してsha-256で検証してからリクエストできる仕組み。

アバター

ジャック

みんなページネーションしてんの?

アバター

ノーラン

古いし嫌われそうだけど、graphqlが200返して「ごめん、データダメ」って言うのはマジで嫌い。 普通にステータス使おうよ。

アバター

レオ

なんかノリで作ったAPI?

アバター

サラ

ページトークン?

アバター

ロバート

データ読まずに次のページトークン計算できるの? カーソル機能はデータ読み込まないと無理だよね。

アバター

リリー

20年以上やっててこんなの初めて見たわ。

アバター

ハンナ

俺の使ってるAPIはまずユーザ名とかでトークン作って、その後クエリでID指定して呼ぶんだけど実際の結果は返さずまた別のトークン返してくる。 そしてさらにもう一回IDとそのトークンで呼ぶとやっと結果が返る。 しかもJSONのフィールド名が「a」「b」「c」とか「cOMPANY_NAME」とか意味不明。

アバター

グレース

ページネーションはヘッダーから取ってる。

アバター

クロエ

これってレスポンス返す前にメモリ上でフィルタリングしてるからじゃない?

アバター

リリー

久々だけどこれ見てDrupal思い出したわ、超嫌な記憶…

アバター

ミア

こんな方法見たことないな。 唯一のメリットはキャッシュしやすいことくらいかも。 一回リクエストしてキャッシュに保存すれば、次からはブラウザがキャッシュ使ってサーバー待ちしなくて済む。 初回以降は必要なコンテンツだけAJAXで取る感じ。

アバター

ロバート

CDNやVarnish使ってキャッシュしても、結局2回往復は必要で1回はPHPとか起動させずに済むけど、それでも面倒。

アバター

ハンナ

まあとにかく変だし怠けた実装って感じだね。


関連記事