ฉันทำงานในโครงการและหลังจากโต้เถียงกับคนที่ทำงานเป็นเวลานานกว่าหนึ่งชั่วโมง ฉันตัดสินใจที่จะรู้ว่าคนในการแลกเปลี่ยนสแต็คอาจพูดอะไร
เรากำลังเขียน API สำหรับระบบมีแบบสอบถามที่ควรส่งทรีขององค์กรหรือต้นไม้เป้าหมาย
โครงสร้างขององค์กรเป็นองค์กรที่มีผู้ใช้อยู่กล่าวอีกนัยหนึ่งต้นไม้นี้ควรมีอยู่เสมอ ในองค์กรต้นไม้แห่งเป้าหมายควรมีอยู่เสมอ (นั่นคือจุดเริ่มต้นของการโต้แย้ง) ในกรณีที่ไม่มีต้นไม้เพื่อนร่วมงานของฉันตัดสินใจว่ามันจะถูกต้องที่จะตอบการตอบกลับด้วยรหัสสถานะ 200 จากนั้นก็เริ่มขอให้ฉันแก้ไขรหัสของฉันเพราะแอปพลิเคชันล้มลงเมื่อไม่มีต้นไม้
ฉันจะพยายามทำให้เปลวไฟและความโกรธเคืองน้อยลง
ฉันแนะนำให้เพิ่มข้อผิดพลาด 404 เมื่อไม่มีต้นไม้ อย่างน้อยก็ให้ฉันรู้ว่ามีบางอย่างผิดปกติ เมื่อใช้ 200 ฉันต้องเพิ่มการตรวจสอบพิเศษในการตอบกลับของฉันในการติดต่อกลับสำเร็จเพื่อจัดการข้อผิดพลาด ฉันคาดหวังว่าจะได้รับวัตถุ แต่จริง ๆ แล้วฉันอาจได้รับการตอบสนองที่ว่างเปล่าเพราะไม่พบอะไรเลย มันฟังดูยุติธรรมมากที่จะทำเครื่องหมายการตอบรับเป็น 404 และจากนั้นสงครามก็เริ่มขึ้นและฉันได้รับข้อความว่าฉันไม่เข้าใจสกีมาโค้ดสถานะ HTTP ดังนั้นฉันมาที่นี่แล้วถามว่าเกิดอะไรขึ้นกับ 404 ในกรณีนี้ ฉันยังได้ข้อโต้แย้งว่า " ไม่พบอะไรเลยดังนั้นจึงถูกต้องที่จะคืน 200" ฉันเชื่อว่ามันผิดเพราะต้นไม้ควรมีอยู่เสมอ หากเราไม่พบอะไรและเราคาดหวังบางสิ่งมันควรจะเป็น 404
ข้อมูลเพิ่มเติม,
ฉันลืมที่จะเพิ่ม URL ที่ดึงมา
องค์กร
/OrgTree/Get
เป้าหมาย
/GoalTree/GetByDate?versionDate=...
/GoalTree/GetById?versionId=...
ความผิดพลาดของฉันจำเป็นต้องใช้ทั้งพารามิเตอร์ หาก versionDate ใด ๆ ที่สามารถแยกวิเคราะห์เป็นวันที่ได้ก็จะส่งคืนการแก้ไขที่ปิด หากคุณป้อนบางสิ่งในอดีตมันจะคืนค่าการแก้ไขครั้งแรก หากโดย Id ที่ไม่มี id ฉันสงสัยว่ามันจะส่งคืนการตอบกลับที่ว่างด้วย 200
พิเศษ
นอกจากนี้ฉันเชื่อว่าคำตอบที่ดีที่สุดสำหรับปัญหาคือการสร้างวัตถุเริ่มต้นเมื่อมีการสร้างองค์กรโดยไม่มีแผนผังไม่ควรเป็นกรณีที่ถูกต้องและควรถูกมองว่าเป็นพฤติกรรมที่ไม่ได้กำหนด ไม่มีวิธีใดที่บัญชีจะสามารถใช้ได้หากไม่มีทั้งสองต้น ด้วยเหตุผลดังกล่าวจึงควรมีอยู่เสมอ
ฉันยังเชื่อมโยงสิ่งนี้ด้วย (คล้ายกัน แต่ฉันหามันไม่เจอ)
http://viswaug.files.wordpress.com/2008/11/http-headers-status1.png
/GoalTree/GetById?versionId=CompletelyInvalidID
กลับมา? ไม่สำเร็จเนื่องจาก/GoalTree/GetById?versionId=CompletelyInvalidID
ไม่พบทรัพยากรที่มีชื่อ