DeclarativeなAPI?
前記事ではDeclarative
とは何なのかを、個人的偏見も込みで解釈しました。
要は、トップダウンで、目的だけ一言で言う、ようなクエリです。
GraphQLがDeclarativeと呼ばれる理由は何なんでしょうか。
そこには以下のような力関係があると思います。
これまではAPI利用者はAPI提供者の仕様に従っている?
従来、API利用者とAPI提供者の力関係はどちらかというと
API利用者 | API提供者 |
---|---|
エンドポイントにリソース名だけ付けて要求 | エンドポイントに対しあらかじめ決まった処理を実行 |
レスポンスの中身は変えられない | レスポンスはあらかじめ決まった形式で返答 |
たくさんのレスポンスが必要なら何回もリクエストを投げる | リクエストに対してあらかじめ決まった個数だけレスポンスを返す |
力関係 API利用者 < API提供者
API提供者に柔軟性がないばかりに、API利用者は言われるがままの状態です。
ではGraphQLは?
API利用者 | API提供者 |
---|---|
エンドポイントに「何が欲しいのか(条件など)」を付けて要求 | リクエストに合わせて柔軟に処理を変更 |
レスポンスの中身を必要な分だけ指定して要求(フィールドなど) | レスポンスは要求通りの形式で返答 |
レスポンスの中身がたくさんあるかどうかは気にしないで条件だけ送る | 条件に当てはまったものはたくさんでもちゃんと返す |
力関係 API利用者 > API提供者
出ましたね! 利用者側はかなり空気を読んでません。
その代り、API利用者がすごく強くて楽なわけです。
なので、フロントエンド開発者がやりやすくするためのBackend For Frontend (BFF) のAPIとして期待されているわけですね。