Box APIレスポンスヘッダーの変更

Box Developers
Apr 15 · 5 min read

こちらでご案内しているとおり、日本時間2021年5月11日にBox APIを呼び出したときに返されるレスポンスヘッダーを変更する予定です。今回の変更により、Boxのネットワークおよび可観測性のインフラストラクチャの継続的なアップグレードの一環として、レスポンスヘッダーが常に小文字で返されるようになります。Box SDKのユーザーはこの影響を受けませんが、直接APIを利用している場合、このようなレスポンスヘッダーを使用しているかどうかやその使用方法によって影響を受ける可能性があります。

影響を受ける可能性のあるお客様にはすでにご案内していますが、お使いのBoxアプリケーションがこれらの標準に準拠しているかどうかを再度ご確認ください。以下の例では、業界のベストプラクティスやBoxのAPIドキュメントに従って、大文字と小文字を区別せずにレスポンスヘッダーをBoxから取得し、アクセスする方法を示しています。

サンプルの設定

このNode/Expressサンプルでは、Boxからアクセストークンを取得するためのAPI呼び出しを実行します。レスポンスでは、ヘッダーも取得されます。これを使用すると、プログラムのフローにも役立ちます。注意すべき重要なコードがいくつかあります。

ここでは、コンテンツタイプと長さに関するリクエストヘッダーを設定しています。これらのリクエストヘッダーは、今回のリリースによる影響を受けません。影響を受けるのはレスポンスヘッダーのみです。つまり、これらの値を設定する際に、既存のコードを変更する必要はありません。

headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': req.length
}

次に、このAPIリクエストをBoxに対して実行し、レスポンスが返されたら、特定のヘッダー (Content-Type) を取得するために以下の2行を使用します。このようにAPIレスポンスヘッダーを取得して使用する部分をコード内で検索してください。ここでは、Content-Typeが大文字と小文字を区別して確認されているため、今回の影響を受ける可能性があります。

let contentType = response.headers[‘Content-Type’];
console.log(contentType);

以下のコードサンプルでは、optionsにリクエストの詳細を設定し、Boxのアクセストークンを取得するためにPOSTリクエストを送信しました。レスポンスが返されたら、エラーがないか確認し、レスポンスヘッダーを取得してから、レスポンスのパラメータからアクセストークン/有効期限を抽出します。

大文字と小文字を区別しないレスポンスヘッダーの確認への切り替え

上記 (response.headers[‘Content-Type’]) のようにヘッダーを取得した場合、レスポンスヘッダーは大文字と小文字を区別して取得されます。ヘッダーを取得するタイミングではなく、その使用方法に注意が必要です。特定のヘッダーが存在することを予想して、その予想を基にプログラムの実行を進めた際に問題になる場合があります。

このようなヘッダーを大文字と小文字を区別せずに確認する方法は多数ありますが、その1つに、すべてのレスポンスヘッダーを強制的に大文字と小文字のいずれかに変換してから使用する方法があります。その方法は以下のとおりです。

  1. すべてのレスポンスヘッダーをループ処理します。

上記の手順が完了した時点で、すべてのヘッダーは標準の小文字の値に強制的に変換されているため、JSONオブジェクトで (たとえば) content-typeキーがあるかどうかを確認できます。これで、通常どおりプログラムの実行を続行し、必要な値が使用できるかどうかを確認できます。

上記のContent-Typeを確認する行を、次のように、大文字と小文字を区別しないヘッダーの確認に変更します。

上記のコードスニペットに関する注意事項がいくつかあります。

  1. response.headersには、レスポンス内のヘッダーがすべて含まれます。このサンプルでは、Node/Expressを使用しています。

これは、コード内で大文字と小文字を区別せずにレスポンスヘッダーを確認する方法の一例にすぎません。これにより、将来的にアプリケーションコードの柔軟性が高まるだけでなく、HTTP標準に準拠した開発が可能になります。

Box Developer Blog

News and stories for working with the Box APIs

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store