エラー処理

Pythonを使ったAPI入門

Chris Ramakers

Engineering Manager

エラーステータスコード

4xx クライアントエラー


  • クライアント側の問題を示す
  • 主な原因: 不適切なリクエスト、認証の失敗など...

解決策: リクエストを修正

5xx サーバー側のエラー


  • サーバー側の問題によって発生する
  • 主な原因: サーバーの過負荷、サーバーの設定エラー、内部エラー

解決策: API管理者が修正する必要があります

Pythonを使ったAPI入門

エラーステータスコード:例

4xx クライアントエラー


  • 401 Unauthorized - 要求されたリソースに対する有効な認証情報がありません
  • 404 Not Found - サーバーがリクエストされたリソースを見つけられないことを示します
  • 429 Too Many Requests - クライアントが一定時間内に送信したリクエストの数が多すぎます

5xx サーバー側のエラー


  • 500 Internal Server Error - サーバーで予期しない問題が発生し、レスポンスを返せません
  • 502 Bad Gateway - APIサーバーが、レスポンスを完了するために必要な別のサーバーに正常に接続できませんでした
  • 504 Gateway Timeout - ゲートウェイとして機能するサーバーが、上流サーバーから時間内にレスポンスを受信できませんでした
Pythonを使ったAPI入門

エラーの処理

APIエラー

import requests

url = 'http://api.music-catalog.com/albums'

r = requests.get(url)

if r.status_code >= 400: # Oops, something went wrong
else: # All fine, let's do something # with the response

接続エラー

import requests

from requests.exceptions import ConnectionError
url = ''
try: r = requests.get(url) print(r.status_code)
except ConnectionError as conn_err: print(f'Connection Error! {conn_err}.') print(error)
Pythonを使ったAPI入門

raise_for_status()

import requests

# 1: Import the requests library exceptions from requests.exceptions import ConnectionError, HTTPError
try:
r = requests.get("http://api.music-catalog.com/albums")
# 2: Enable raising exceptions for returned error statuscodes r.raise_for_status()
print(r.status_code)
# 3: Catch any connection errors except ConnectionError as conn_err: print(f'Connection Error! {conn_err}.')
# 4: Catch error responses from the API server except HTTPError as http_err: print(f'HTTP error occurred: {http_err}')
Pythonを使ったAPI入門

練習しましょう!

Pythonを使ったAPI入門

Preparing Video For Download...