การจัดการข้อผิดพลาด

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 - เซิร์ฟเวอร์ (ที่ทำหน้าที่เป็น gateway) ไม่ได้รับการตอบสนองจากเซิร์ฟเวอร์ต้นทางทันเวลา
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...