ดังนั้นบริการ RESTful จึงมีคำกริยาในชุดที่แน่นอน บริการเว็บ RESTful ใช้สิ่งเหล่านี้จากวิธี HTTP มีข้อได้เปรียบบางอย่างในการนิยามคำศัพท์ที่คงที่ แต่ฉันไม่เข้าใจประเด็น บางทีใครบางคนสามารถอธิบายได้
ทำไมคำศัพท์แบบตายตัวตามที่ระบุโดย REST ดีกว่าการกำหนดคำศัพท์แบบไดนามิกสำหรับแต่ละรัฐ ตัวอย่างเช่นการเขียนโปรแกรมเชิงวัตถุเป็นกระบวนทัศน์ที่เป็นที่นิยม RPC ได้รับการอธิบายเพื่อกำหนดอินเทอร์เฟซคงที่ แต่ฉันไม่รู้ว่าทำไมคนทั่วไปคิดว่า RPC ถูก จำกัด โดยข้อ จำกัด เหล่านี้ เราสามารถระบุอินเทอร์เฟซแบบไดนามิกเช่นเดียวกับบริการ RESTful อธิบายโครงสร้างเนื้อหาแบบไดนามิก
ส่วนที่เหลือควรจะเป็นข้อได้เปรียบในการที่จะสามารถเติบโตได้โดยไม่ต้องขยายคำศัพท์ บริการ RESTful เติบโตแบบไดนามิกโดยการเพิ่มทรัพยากรมากขึ้น มีอะไรผิดปกติเกี่ยวกับการขยายการบริการโดยการระบุคำศัพท์ต่อวัตถุแบบไดนามิกหรือไม่ ทำไมเราไม่ใช้วิธีที่กำหนดไว้ในวัตถุของเราเป็นคำศัพท์และให้บริการของเราอธิบายให้ลูกค้าฟังว่าวิธีการเหล่านี้คืออะไรและมีผลข้างเคียงหรือไม่
โดยพื้นฐานแล้วฉันรู้สึกว่าคำอธิบายของโครงสร้างทรัพยากรด้านเซิร์ฟเวอร์นั้นเทียบเท่ากับคำนิยามของคำศัพท์ แต่จากนั้นเราถูกบังคับให้ใช้คำศัพท์ที่มีข้อ จำกัด ในการโต้ตอบกับทรัพยากรเหล่านี้
คำศัพท์ที่กำหนดแน่นอนช่วยลดความกังวลของลูกค้าจากความกังวลของเซิร์ฟเวอร์หรือไม่ แน่นอนฉันต้องกังวลเกี่ยวกับการกำหนดค่าบางอย่างของเซิร์ฟเวอร์ซึ่งเป็นตำแหน่งทรัพยากรในบริการ RESTful การบ่นที่ใช้คำศัพท์แบบไดนามิกดูเหมือนไม่ยุติธรรมเพราะเราต้องใช้เหตุผลแบบไดนามิกเพื่อทำความเข้าใจกับการกำหนดค่านี้ในบางวิธีต่อไป เซอร์วิส RESTful อธิบายการเปลี่ยนแปลงที่คุณสามารถทำได้โดยการระบุโครงสร้างวัตถุผ่านสื่อบันทึก
ฉันไม่เข้าใจว่าอะไรทำให้คำศัพท์คงที่ดีกว่าคำศัพท์แบบไดนามิกที่อธิบายตัวเองได้ซึ่งสามารถทำงานได้ดีในบริการคล้าย RPC นี่เป็นเพียงเหตุผลที่ไม่ดีสำหรับการ จำกัด คำศัพท์ของโปรโตคอล HTTP หรือไม่?
การสะท้อนกลับ
เพียงชี้แจงความคิดของฉันให้ดีขึ้นกว่าที่ฉันทำไปเล็กน้อย สมมติว่าคุณกำลังออกแบบ API วัตถุประสงค์ทั่วไปอาจไม่ได้หันหน้าเข้าหาเว็บ คุณจะมีความสุขไหมถ้ามีคนบอกว่าคุณสามารถใช้ชื่อวิธีการเหล่านี้กับวัตถุของคุณได้เท่านั้น REST ไม่ได้ถูก จำกัด ไว้ที่ HTTP แต่ให้พิจารณาสถานการณ์ที่ API ทุกอันที่คุณเขียนหน้าเว็บหรืออย่างอื่นประกอบด้วยวัตถุที่มีวิธีการ GET POST PUT และ DELETE ดังนั้นเมธอด object.foo ที่คุณต้องการนิยามจึงเป็นไปไม่ได้ คุณต้องกำหนดวัตถุใหม่ที่เรียกว่า foo และเรียกใช้วิธีการ GET นั่นเป็นวิธีที่ REST ใช้งานได้และมันทำให้ฉันรู้สึกอึดอัดเล็กน้อยที่จะคิดเกี่ยวกับมัน คุณไม่มีความเข้าใจที่ดีกว่าทั่วไปเกี่ยวกับสิ่งที่ foo ทำคุณถูกบังคับให้สร้างวัตถุใหม่สำหรับสิ่งที่เป็นวิธีการในวัตถุแม่ นอกจากนี้ API ของคุณก็มีความซับซ้อนไม่น้อย คุณมีความซับซ้อนของอินเตอร์เฟซที่ซ่อนอยู่โดยการสร้างวัตถุมากขึ้น บริการเว็บสงบกำลังบังคับให้เราใช้ส่วนต่อประสานซึ่งอาจหรืออาจไม่เพียงพอในบริบทของ API ที่เรากำลังเปิดเผย อาจมีเหตุผลที่ดีในการทำเช่นนี้กับ API ที่ใช้กับเว็บ แต่เหตุผลที่ดีที่จะไม่ใช้อินเทอร์เฟซมาตรฐานสำหรับวัตถุทุกอย่างใน API สำหรับวัตถุประสงค์ทั่วไป ตัวอย่างที่เป็นประโยชน์จะได้รับการชื่นชม