こんにちは!
AWSAppSyncClient は、Apollo クライアントを拡張した AppSync 向けのGraphQL クライアントです。
AppSync 向けと表現しましたが、正確にはCognito や IAM と認証/認可連携できるなど、AWS 環境での GraphQL 利用に特化していると言えます。
本記事では、AWSAppSyncClient を使用する際に実行する hydrated() 関数について解説します。
AppSync クライアントをフロントエンド ( SPA上 ) から利用する際は、下記のようにクライアントをセットアップします。( Lambda 上などの OS 上での実行の場合は設定方法が異なるので注意ください )
const client = new AWSAppSyncClient({
url: 'https://xxxxx.appsync-api.ap-northeast-1.amazonaws.com/graphql', // AppSync Graphql Endpoint
region: 'ap-northeast-1',
auth: {
type: API_KEY | API_KEY | AWS_IAM | OPENID_CONNECT | AMAZON_COGNITO_USER_POOLS
...
}
});
client.hydrated().then(function (client) {
// GraphQLのオペレーションを開始
});
上記コードのclient.hydrated()
がなぜ必要なのか、AWS & Apollo ドキュメントで深く触れられていません。ウェブ SPA での SDK 利用時は特に理解する必要はないですが、気になったヒトは多いと思います。
hydrated()
について、後述で解説します。
AppSyncSDKのソースコードを追うと、下記のコードにたどり着きます。
private hydratedPromise: Promise<AWSAppSyncClient<TCacheShape>>;
hydrated() {
return this.hydratedPromise
};
ご覧の通り、hydreated()
関数はhydratedPromiseをレスポンスしています。
this.hydratedPromise = disableOffline ? Promise.resolve(this) : new Promise(resolve => { resolveClient = resolve; });
AppSyncClient の状態をセットアップしているのがわかります。
ここで重要なのは、ソースコードにもあるように disableOffline
が有効か否かを評価している箇所です。AppSyncClient の初期状態が disableOffline
パラメーターに依存して変化するということがわかります。
hydreated()
は、 AppSyncClient の初期化処理が終わるまで待つためのメソッドであるように見受けられます。AppSyncClient の初期状態を作る関数として呼び出しを行う必要がある、ということですね。
AppSyncClient のドキュメントを見たり Apollo のドキュメントを見たりで、SDK の細かいところの把握するのはコスト大きいですよね。実際の開発で忙しい場合は一旦細かい仕様のキャッチアップをスキップし、実装するというのも1つだと思います。
AppSync に関する開発は、お気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎