拡張機能研究所

Introducing recommended browser extensions in manga format!

2025/08/30 15:00

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

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

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

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


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

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


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

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

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


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

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


まとめ💗

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

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

Show animated messageON
なんで最初からこうしないのー💢

Comments

Ataror of Valentina

ベン

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

Ataror of Brooklynn

ハンナ

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

Ataror of Christian

クリス

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

Ataror of Eden

ジャック

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

Ataror of Nolan

ノーラン

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

Ataror of Leo

レオ

なんかノリで作ったAPI?

Ataror of Sara

サラ

ページトークン?

Ataror of Robert

ロバート

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

Ataror of Luis

リリー

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

Ataror of Brooklynn

ハンナ

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

Ataror of Kingston

グレース

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

Ataror of Caleb

クロエ

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

Ataror of Luis

リリー

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

Ataror of Brian

ミア

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

Ataror of Robert

ロバート

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

Ataror of Brooklynn

ハンナ

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


PICKUP
Related Articles