ヘッダーによる一貫性の確保
ヘッダーによる一貫性の確保
一部のBox APIでは、アプリケーションとBox間の一貫性を確保するために使用されるヘッダーがサポートされています。
etag
、if-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",
...
}
このetag
をif-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/content | 新しいファイルバージョンをアップロード |
PUT /files/:id | ファイルの情報を更新 |
DELETE /files/:id | ファイルを削除 |
PUT /folders/:id | フォルダの情報を更新 |
DELETE /folders/:id | フォルダを削除 |
PUT /web_links/:id | ウェブリンクの情報を更新 |
DELETE /web_links/:id | ウェブリンクを削除 |
これらのAPIコールのレスポンスは、項目が存在するかどうか、およびetag
値が最新バージョンと一致するかどうかによって異なります。
項目があるか? | Etagが一致するか? | HTTPステータス |
---|---|---|
はい | はい | 200 |
はい | いいえ | 412 |
いいえ | はい | 412 |
いいえ |