Open CloudデータストアAPIへのリクエストを送信し、レスポンスを処理する際には、いくつかの考慮事項があります。
HTTPヘッダー
すべてのOpen Cloudエンドポイントと同様に、APIキー認証を使用するデータストアリクエストには、x-api-keyヘッダーを含める必要があります。詳細については、APIキーの管理を参照してください。
- 不正確または欠落しているAPIキーは401エラーを引き起こします。
- 適切な権限がない有効なAPIキーは403エラーを引き起こします。
リクエストにボディ(作成または更新リクエストなど)が含まれる場合は、Content-Type: application/jsonおよびContent-Lengthヘッダーを含めてください。ほとんどのクライアントはこれらのヘッダーを自動的に含めます。
ページネーション
データストアには多くのエントリが含まれていることが多く、特にデータストアエントリのリストを呼び出す際には、最大数の結果とページに対処する必要があります。詳細については、ページネーションを参照してください。
フィルター
データストアエントリの名前にプレフィックスを使用している場合、GET呼び出しをフィルタリングしたいと考えるでしょう。次のようにします。
def list_entries(universe, data_store, filter):
list_path = f'universes/{universe}/data-stores/{data_store}/entries'
url = base_url + list_path
return requests.get(url, params={'filter': f'id.startsWith("global/{filter}")'}, headers={apiHeaderKey: apiKey})
フィルター構文は非常に制限されています。使用可能なフィルターの詳細は、標準および順序付きデータストアの参照ドキュメントを参照してください。
不足しているフラグを許可
標準および順序付きデータストアのPATCH(更新)メソッドにはallow_missingパラメーターがあります。このパラメーターを真に設定すると、エラーを投げるのではなく、既に存在しないエントリを作成できます。このパラメーターは、特に良い理由がない限り、デフォルト値のfalseのままにしておいてください。作成されていないエントリを更新することは、プログラミングロジック上のエラーを示すことがよくあります。
スコープ
多くのリクエストでは、デフォルト値のglobalであっても、スコープを指定する必要があります。これらのスコープは、権限スコープとは異なり、データストア内のエントリを細分化および整理することを可能にします。
ただし、非デフォルトスコープを作成するのではなく、プレフィックスの使用を強く推奨します。詳細については、リストとプレフィックスを参照してください。
Content-MD5
Open Cloud v1 APIは、一部のリクエストでオプションのbase64エンコードされたMD5チェックサムをサポートしており、データの整合性問題を検出できます。多くのプログラミング言語には、content-md5ヘッダーの値を計算するための組み込み関数があります。次の例はPythonを使用しています。
$ echo "750" | python -c "import base64, hashlib; print(str(base64.b64encode(hashlib.md5(bytes(input(), encoding='utf8')).digest()), encoding='utf8'))"sTf90fedVsft8zZf6nUg8g==
有効なcontent-md5値を生成する際に問題が発生した場合は、チェックサムを計算する前にリクエストボディをUTF-8でエンコードする必要があるかもしれません。