ガイドAPI呼び出し一貫性の確保

一貫性の確保

一貫性の確保

いくつかのBox APIでは、アプリケーションとBox間の一貫性を制御するためのヘッダーがサポートされています。

etagif-match、およびif-none-match

APIを介してリクエスト可能なファイルシステムの項目(ファイルまたはフォルダ)の多くは、項目のetag値を返します。

たとえば、ファイルリソースはJSON応答でetagを返します。

curl https://api.box.com/2.0/files/12345 \
    -H "authorization: Bearer ACCESS_TOKEN"
{
  "id": 12345,
  "etag": 1,
  "type": "file",
  "sequence_id": 3,
  "name": "Contract.pdf",
  ...
}

このetagif-matchまたはif-none-matchヘッダーの値として使用できるのは、etag値が受信されてからリソースが変更されていないことを確認するためか、または変更されていない項目を不必要にダウンロードしないようにするためです。

たとえば、同じファイルを取得するのはそのファイルが変更された場合のみにするには、if-none-matchヘッダーでetag値を渡します。

curl https://api.box.com/2.0/files/12345 \
  -H "authorization: Bearer ACCESS_TOKEN" \
  -H "if-none-match: 1"

ファイルが変更されていない場合、このAPI呼び出しでは空の応答が返されます。

一貫性のある変更の確保

if-matchヘッダーを使用すると、アプリケーションは、最後に調べた項目がその後別のアプリケーションまたはユーザーによって変更が加えられても、項目が変更されないようにすることができます。これにより、2つのアプリケーションまたは2人のユーザーが項目を同時に変更しても変更が失われることはありません。

このヘッダーは、以下のエンドポイントでサポートされます。

if-match対応のエンドポイント
POST /files/:id/contentUpload a new file version
PUT /files/:idUpdate a file's information
DELETE /files/:idDelete a file
PUT /folders/:idUpdate a folder's information
DELETE /folders/:idDelete a folder
PUT /web_links/:idUpdate a web link's information
DELETE /web_links/:idDelete a web link

これらのAPI呼び出しの応答は、項目が存在するかどうか、およびetag値が最新バージョンと一致するかどうかによって異なります。

項目があるか?Etagが一致するか?HTTPステータス
はいはい200
はいいいえ412
いいえはい412
いいえいいえ404

項目の移動

if-matchヘッダーを使用してファイル、フォルダ、またはウェブリンクの移動を防ぐことはできません。Boxでは、必ず最新の項目が新しい場所に移動されます。

リクエストによる不要なダウンロードの防止

if-none-matchヘッダーを使用すると、アプリケーションは、最後に調べてから変更されていない項目の情報がダウンロードされないようにすることができます。これにより、不要な情報がダウンロードされなくなるため、アプリケーションの速度が向上し、帯域幅が節約されます。

if-none-match対応のエンドポイント
GET /files/:idGet a file's information
GET /folders/:idGet a folder's information
GET /web_links/:idGet a web link's information
GET /shared_itemsGet a shared item's information

これらのAPI呼び出しの応答は、項目が存在するかどうか、およびetag値が最新バージョンと一致するかどうかによって異なります。

項目があるか?Etagが一致するか?HTTPステータス
はいはい304
はいいいえ200
いいえはい404
いいえいいえ404