始める無料で始める

コンテンツタイプに関するエラーの処理

特定のレスポンス形式を指定しても、サーバーがその形式に対応していない場合はどうなるでしょうか。たとえば、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)
コードを編集して実行