コンテンツタイプに関するエラーの処理
特定のレスポンス形式を指定しても、サーバーがその形式に対応していない場合はどうなるでしょうか。たとえば、JSONではなくXML形式でレスポンスを受け取りたいとします。サーバーがXML形式でレスポンスを返せない場合、要求された形式に対応できないことを示すステータスコードが返されます。このとき使われるのが 406 Not Acceptable、略して 406 です。また、サーバーからのレスポンスには、対応可能なレスポンス形式の一覧を示す accept ヘッダーが含まれることもあります。これを使って、APIがどのコンテンツタイプに対応しているか確認してみましょう。
この演習はコースの一部です
Pythonを使ったAPI入門
演習の手順
acceptヘッダーを追加し、コンテンツタイプapplication/xmlのレスポンスをサーバーに要求してください。- 該当するステータスコードを使って、サーバーがリクエストを受け入れなかったかどうかを確認してください。
- サーバーからのレスポンスに含まれる、対応可能なコンテンツタイプの一覧を出力してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Add a header to use in the request
headers = {____}
response = requests.get('http://localhost:3000/lyrics', headers=headers)
# Check if the server did not accept the request
if (response.____ == ____):
print('The server can not respond in XML')
# Print the accepted content types
print('These are the content types the server accepts: ' + response.____)
else:
print(response.text)