コンテンツタイプのエラーを扱う
特定の形式でのレスポンスを要求したのに、サーバーがその要求に応えられない場合はどうなるでしょうか。たとえば、JSON ではなく XML でレスポンスを受け取りたいとします。サーバーが XML で返せない場合、要求された形式では返信できないことを示す特定のステータスコードで応答します。このとき使われるステータスコードは 406 Not Acceptable、短くは 406 です。サーバーからのレスポンスには、しばしば accept ヘッダーが含まれ、サーバーが返信できるレスポンス形式の一覧が入っています。これを手がかりに、その API がどのコンテンツタイプで応答できるかを確認しましょう。
この演習はコースの一部です
Python で学ぶ API 入門
演習の手順
- サーバーに
application/xmlのコンテンツタイプでのレスポンスを要求するため、acceptヘッダーを追加します。 - 関連するステータスコードを使って、サーバーが要求を受け入れなかったかどうかを確認します。
- サーバーレスポンスから、受け入れ可能なコンテンツタイプの一覧を出力してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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)