ฉันกำลังทำงานกับ REST API ซึ่งอยู่บนเซิร์ฟเวอร์ที่จัดการข้อมูลสำหรับอุปกรณ์ IoT จำนวนมาก
งานของฉันคือการสืบค้นเซิร์ฟเวอร์โดยใช้ API เพื่อรวบรวมข้อมูลประสิทธิภาพเฉพาะเกี่ยวกับอุปกรณ์ดังกล่าว
ในอินสแตนซ์หนึ่งฉันได้รับรายการอุปกรณ์ที่มีอยู่และตัวระบุที่เกี่ยวข้องจากนั้นจึงสอบถามเซิร์ฟเวอร์เพื่อรับรายละเอียดเพิ่มเติมโดยใช้ตัวระบุเหล่านั้น (GUID)
เซิร์ฟเวอร์ส่งคืน500 Internal Server Error
แบบสอบถามสำหรับหนึ่งใน ID เหล่านั้น ในแอปพลิเคชันของฉันมีข้อผิดพลาดเกิดขึ้นและฉันไม่เห็นรายละเอียดเกี่ยวกับข้อผิดพลาด หากฉันตรวจสอบการตอบสนองอย่างใกล้ชิดกับบุรุษไปรษณีย์ฉันจะเห็นว่าเซิร์ฟเวอร์ส่งคืน JSON ในเนื้อหาซึ่งมี:
errorMessage: "This ID does not exist"
.
ไม่สนใจข้อเท็จจริงที่เซิร์ฟเวอร์ระบุรหัสเริ่มต้นนั่นเป็นปัญหาแยกต่างหากสำหรับนักพัฒนา
REST API ควรส่งคืน a 500 Internal Server Error
เพื่อรายงานว่าแบบสอบถามอ้างอิงวัตถุที่ไม่มีอยู่หรือไม่? ตามความคิดของฉันรหัสตอบกลับ HTTP ควรอ้างอิงอย่างเคร่งครัดถึงสถานะของการเรียกใช้ REST แทนที่จะใช้กลไกภายในของ API ฉันคาดหวังว่าจะ200 OK
มีการตอบสนองที่มีข้อผิดพลาดและคำอธิบายซึ่งจะเป็นกรรมสิทธิ์ของ API ที่เป็นปัญหา
มันเกิดขึ้นกับฉันว่ามีความคาดหวังที่แตกต่างกันขึ้นอยู่กับว่าการเรียกใช้ REST นั้นมีโครงสร้างอย่างไร
ลองพิจารณาตัวอย่างเหล่านี้:
http://example.com/restapi/deviceinfo?id=123
http://example.com/restapi/device/123/info
ในกรณีแรกรหัสอุปกรณ์จะถูกส่งเป็นตัวแปร GET 404 หรือ 500 จะระบุว่าเส้นทาง ( /restapi/deviceinfo
) ไม่พบหรือทำให้เซิร์ฟเวอร์เกิดข้อผิดพลาด
ในกรณีที่สอง ID อุปกรณ์เป็นส่วนหนึ่งของ URL ฉันจะเข้าใจมากขึ้นเกี่ยวกับ a 404 Not Found
แต่ก็ยังสามารถโต้แย้งได้ว่าส่วนใดของเส้นทางที่ถูกตีความว่าเป็นตัวแปรเทียบกับจุดสิ้นสุด