การจัดการข้อผิดพลาดด้าน content-type
จะเกิดอะไรขึ้นเมื่อขอรับ response ในรูปแบบที่กำหนด แต่เซิร์ฟเวอร์ไม่สามารถตอบสนองได้? สมมติว่าต้องการรับ response เป็น XML แทน JSON หากเซิร์ฟเวอร์ไม่รองรับ XML ก็จะตอบกลับด้วย status code เฉพาะที่บ่งบอกว่าไม่สามารถตอบในรูปแบบที่ร้องขอได้ status code ที่ใช้ในกรณีนี้คือ 406 Not Acceptable หรือเรียกสั้น ๆ ว่า 406 นอกจากนี้ response จากเซิร์ฟเวอร์มักจะมี accept header ที่แสดงรายการรูปแบบ response ทั้งหมดที่รองรับ ใช้ข้อมูลนี้เพื่อเรียนรู้ว่า API สามารถตอบกลับในรูปแบบ content type ใดได้บ้าง
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้นสำหรับ API
คำแนะนำการฝึกหัด
- เพิ่ม
acceptheader เพื่อขอรับ response ในรูปแบบ content-typeapplication/xmlจากเซิร์ฟเวอร์ - ตรวจสอบว่าเซิร์ฟเวอร์ปฏิเสธคำขอหรือไม่ โดยใช้ status code ที่เกี่ยวข้อง
- แสดงรายการ content type ที่เซิร์ฟเวอร์รองรับจาก response
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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)