การเพิ่มชุดของตัวเลือกที่ จำกัด ; การแตกหักของ API คืออะไร


9

ใช้จุดปลาย HTTP API ซึ่งพ่นรูปแบบการตอบสนองต่อไปนี้:

{
    "type": "Dog",
    "name": "Jessi",
    ...
}

typeข้อมูลได้รับการอธิบายไว้ในเอกสารที่เป็นหนึ่งDog, หรือCatFish

การเพิ่มตัวเลือกใหม่Ratจะถือว่าเป็นการเปลี่ยนแปลง API ที่ผิดปกติหรือไม่

การเพิ่มตัวเลือกในรายการที่ จำกัด (ซึ่งนักพัฒนาซอฟต์แวร์อาจเปิดใช้งาน) ถือว่าเป็นส่วนขยายหรือการแก้ไข API หรือไม่

คำตอบ:


10

หากเอกสารอธิบายฟิลด์นี้ว่าเป็นหนึ่งใน Dog, Cat หรือ Fish ดังนั้นใช่การเพิ่มประเภทอื่นจะเปลี่ยนอินเทอร์เฟซในลักษณะที่เข้ากันไม่ได้ย้อนหลัง เป็นไปได้ว่าผู้บริโภค API ของคุณได้เขียนรหัสเฉพาะเพื่อจัดการกับสุนัขและแมวที่แตกต่างจากปลา ด้วยประเภทที่ไม่รู้จักผู้บริโภคนั้นจะไม่รู้ว่าจะทำอย่างไรกับคำตอบของคุณ แต่สิ่งนี้ขึ้นอยู่กับประเภทของตัวแทน "Cat" และ "Fish" ที่แสดงในโดเมนปัญหาจริงของคุณ ...

หากการเปลี่ยนแปลงในรายการประเภทที่เป็นไปได้บ่อยหรือหากรายการไม่แน่นอนจากนั้นบันทึกเอกสารนี้เช่นที่เหมาะสม ขึ้นอยู่กับกรณีการใช้งานของคุณมันอาจเป็นการดีที่จะแสดงรายการประเภทที่เป็นไปได้ทั้งหมดเป็นจุดปลายใน API ของคุณ - ด้วยวิธีที่ชัดเจนคุณสามารถเพิ่มหรือลบประเภทโดยไม่ต้องอัปเดตเวอร์ชัน API อย่างไรก็ตามยิ่งประเภทของคุณมีพลวัตมากเท่าไหร่ก็ยิ่งยากขึ้นสำหรับผู้ใช้ API ในการทำสิ่งเฉพาะเจาะจง การขยายหรือการใช้งานง่ายนั้นสำคัญกว่านั้นขึ้นอยู่กับกรณีการใช้งานและโดเมนปัญหาของคุณ


คำตอบที่ยอดเยี่ยม - ขอบคุณ จะทำอย่างไรถ้าเอกสารอธิบายรายละเอียดตัวเลือกในบางตารางชื่อด้วย "ตารางต่อไปนี้อธิบายสัตว์ที่ API สนับสนุนในปัจจุบัน " สิ่งนี้ไม่ได้บ่งชี้ว่าตัวเลือกสามารถขยายได้หรือไม่
เดฟใหม่

1
@davenewza นั่นอาจเป็นความคิดที่ดี แต่ฉันจะต้องชัดเจนมากขึ้น อย่าเพิ่งบอกว่าคุณหมายถึงอะไร - พูดโดยตรง! ฉันพยายามกำหนดความคาดหวังที่ชัดเจนและเสนอการรับประกันความมั่นคงในเอกสารสำหรับจุดสิ้นสุดนั้นบางสิ่งเช่น:“ ตารางต่อไปนี้แสดงรายการสัตว์ที่ได้รับการสนับสนุนในปัจจุบันแม้ว่าเราอาจเพิ่มหรือลบสัตว์ที่ได้รับการสนับสนุนในอนาคต เมื่อสิ่งนั้นเกิดขึ้นเราจะอัปเดตหมายเลขเวอร์ชันรองของ API”
amon

สเปคที่ปฏิบัติการได้ >>> สเปคที่จัดทำเอกสาร >>> สเปคที่ไม่มีเอกสาร
VoiceOfUnreason

0

มันจะพังถ้า "หนู" สามารถกลับมาจากการดำเนินงานที่มีอยู่

หากการดำเนินงานที่มีอยู่ไม่สามารถส่งคืน "หนู" แล้วเพิ่มตัวเลือกใหม่นี้จะไม่มีผลกระทบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.