มีคำตอบที่ดีอยู่ที่นี่ แต่ฉันไม่แน่ใจว่าพวกเขาจะช่วยให้คุณโน้มน้าวเพื่อนร่วมงานของคุณ ตามที่หลายคนชี้ให้เห็นสิ่งที่คุณแนะนำไม่ได้เปลี่ยนไปจากการออกแบบที่เงียบสงบและฉันคิดว่านั่นเป็นกุญแจสำคัญที่จะนำพวกเขาขึ้นเครื่องพร้อมข้อเสนอของคุณ
REST ไม่ได้เกี่ยวกับการทำให้แน่ใจว่า API ของคุณอนุญาตให้เก็บและดึงข้อมูลเท่านั้น ค่อนข้างจะเกี่ยวข้องกับการสร้างแบบจำลองการกระทำเป็นทรัพยากร API ของคุณควรเปิดใช้งานการดำเนินการ (เป็นส่วนต่อไปของ Application Programming Application ) คำถามคือทำอย่างไรกับแบบจำลองการกระทำเหล่านั้น
แทนที่จะขึ้นมาพร้อมกับคำ, ตัวอย่างที่น่าจะเป็นวิธีที่ดีที่สุดที่จะอธิบายนี้เพื่อร่วมงานของคุณ วิธีนี้คุณสามารถแสดงให้เห็นว่าพวกเขากำลังทำอะไรอยู่ตอนนี้ปัญหาอะไรที่ทำให้เกิดปัญหาวิธีแก้ปัญหาและวิธีที่มันยังคงสงบ
ลองดูที่วัตถุลูกค้าของคุณ
ปัญหา:
UI โพสต์ลูกค้า แต่ตารางที่ตามมายังไม่ได้รับการปรับปรุง จะเกิดอะไรขึ้นถ้าการโทรที่ตามมาล้มเหลวเนื่องจากข้อผิดพลาดในรหัส UI ของคุณ (หรือปลั๊กอินเบราว์เซอร์ทำงานผิดปกติ ฯลฯ ) ขณะนี้ข้อมูลของคุณอยู่ในสถานะไม่สอดคล้องกัน อาจเป็นสถานะที่แบ่งส่วนอื่น ๆ ของ API หรือ UI ของคุณไม่พูดถึงว่ามันไม่ถูกต้อง คุณจะกู้คืนได้อย่างไร คุณจะต้องทดสอบเพื่อให้ทุกรัฐเป็นไปได้เพื่อให้แน่ใจว่าสิ่งนี้จะไม่ทำลายบางสิ่ง แต่มันยากที่จะรู้ว่าอะไรเป็นไปได้
วิธีการแก้:
สร้าง API ปลายทางเพื่อสร้างลูกค้า คุณรู้ว่าคุณไม่ต้องการที่จะมีจุดสิ้นสุด "/ ลูกค้า / สร้าง" หรือแม้กระทั่ง "/ สร้างลูกค้า" เพราะสร้างเป็นคำกริยาและจะละเมิดส่วนที่เหลือ ดังนั้นคำนามมัน "/ การสร้างลูกค้า" สามารถใช้งานได้ ตอนนี้เมื่อคุณโพสต์วัตถุ CustomerCreation ของคุณมันจะส่งฟิลด์ที่จำเป็นทั้งหมดเพื่อให้ลูกค้าสร้างขึ้นอย่างสมบูรณ์ จุดสิ้นสุดจะทำให้มั่นใจได้ว่าข้อมูลนั้นสมบูรณ์และถูกต้อง (ส่งคืน 400 หรือบางสิ่งถ้าไม่ผ่านการตรวจสอบ) และอาจยังคงอยู่ทั้งหมดภายในธุรกรรม db เดียว
หากคุณต้องการปลายทางสำหรับวัตถุ GET / ลูกค้านั่นก็เป็นเรื่องดี คุณสามารถมีทั้ง เคล็ดลับคือการสร้างจุดสิ้นสุดที่ตอบสนองความต้องการของผู้บริโภค
ข้อดี:
- คุณรับประกันได้ว่าคุณจะไม่ได้รับสถานะที่ไม่ดี
- จริง ๆ แล้วมันง่ายกว่าสำหรับ UI ที่พัฒนาขึ้นหากพวกเขาไม่จำเป็นต้องสั่ง "รู้" ของคำขอ, ตรวจสอบข้อกังวล, ฯลฯ
- มันไม่ได้เป็นเรื่องช่างพูดของ API ช่วยลดเวลาแฝงของการร้องขอเครือข่าย
- ง่ายต่อการทดสอบและกำหนดแนวคิดสถานการณ์ (ชิ้นส่วนที่ขาดหายไป / ผิดรูปแบบจาก UI จะไม่กระจายไปตามคำขอซึ่งบางส่วนอาจล้มเหลว)
- จะช่วยให้การห่อหุ้มของตรรกะทางธุรกิจที่ดีขึ้น
- โดยทั่วไปจะทำให้การรักษาความปลอดภัยง่ายขึ้น (เนื่องจากผู้ใช้งานทางธุรกิจและตรรกะ orchestration ใน UI สามารถแก้ไขได้)
- มีแนวโน้มที่จะลดการทำซ้ำตรรกะ (มีแนวโน้มที่คุณจะมีลูกค้ามากกว่า 2+ คนของ API มากกว่า 2+ API ที่ให้การเข้าถึงข้อมูลเดียวกัน)
- ยังคงสงบ 100%
ข้อเสีย:
- อาจใช้งานได้มากกว่าสำหรับแบ็กเอนด์ส่วนหลัง (แต่อาจไม่ได้อยู่ในระยะยาว)
มันอาจเป็นเรื่องยากสำหรับคนที่จะเข้าใจกระบวนทัศน์นี้และสิ่งที่ดีเกี่ยวกับเรื่องนี้หากพวกเขาไม่ได้ลอง หวังว่าคุณสามารถช่วยให้พวกเขาเห็นโดยใช้ตัวอย่างจากรหัสของคุณเอง
ประสบการณ์ของฉันเองคือเมื่อ devs ในทีมของฉันเริ่มใช้กลยุทธ์นี้พวกเขาเกือบจะเห็นประโยชน์ทันที
การศึกษาเพิ่มเติม:
บทความจาก thinkworks นี้ช่วยให้ฉันได้รับความคิดในการสร้างแบบจำลองการกระทำเป็นวัตถุโดยใช้ตัวอย่างที่ใช้ได้จริง: https : // www. Thoughtworks.com/insights/blog/rest-api-design-resource-modeling
ฉันขอแนะนำให้อ่านข้อมูลเกี่ยวกับCQRS และการจัดหากิจกรรมเนื่องจากเกี่ยวข้องกับสิ่งเหล่านี้อย่างแน่นอน (เช่นการหย่า API ของคุณจากตรรกะการคงอยู่จริง) ฉันไม่ทราบว่าเพื่อนร่วมงานของคุณเต็มใจที่จะอ่านสิ่งเหล่านี้อย่างไร แต่มันอาจช่วยให้คุณมีความชัดเจนมากขึ้นและช่วยให้คุณอธิบายได้