IMO จุดสำคัญคือการวางแนวแอ็คชั่นเทียบกับทรัพยากร ส่วนที่เหลือเป็นทรัพยากรที่มุ่งเน้นและเหมาะสำหรับการดำเนินงาน CRUD และความหมายที่รู้จักกันของมันให้การคาดการณ์บางอย่างให้กับผู้ใช้คนแรก แต่เมื่อดำเนินการจากวิธีการหรือขั้นตอนบังคับให้คุณให้การแปลเทียมไปยังโลกศูนย์กลางทรัพยากร ในทางกลับกัน RPC นั้นเหมาะกับ API แบบแอ็คชั่นอย่างสมบูรณ์แบบซึ่งคุณเปิดเผยบริการไม่ใช่ชุดทรัพยากรที่สามารถใช้ CRUD
ไม่ต้องสงสัยเลยว่า REST ได้รับความนิยมมากกว่านี้แน่นอนว่าจะเพิ่มบางจุดหากคุณต้องการเปิดเผย API ไปยังบุคคลที่สาม
ถ้าไม่ใช่ (เช่นในกรณีที่สร้าง AJAX front-end ใน SPA) ตัวเลือกของฉันคือ RPC โดยเฉพาะอย่างยิ่ง JSON-RPC รวมกับ JSON Schema เป็นภาษาคำอธิบายและส่งผ่าน HTTP หรือ Websockets ขึ้นอยู่กับกรณีการใช้งาน
JSON-RPCเป็นสเปคที่เรียบง่ายและสง่างามที่กำหนดคำขอและการตอบสนอง JSON ส่วนของข้อมูลที่จะใช้ใน RPC แบบซิงโครนัสหรือแบบอะซิงโครนัส
JSON Schemaเป็นข้อกำหนดคุณลักษณะแบบร่างที่กำหนดรูปแบบที่ใช้ JSON เพื่ออธิบายข้อมูล JSON ด้วยการอธิบายบริการอินพุตและเอาต์พุตข้อความโดยใช้ JSON Schema คุณสามารถมีความซับซ้อนโดยพลการในโครงสร้างข้อความโดยไม่กระทบต่อการใช้งานและการรวมบริการสามารถทำได้โดยอัตโนมัติ
ตัวเลือกของโปรโตคอลการขนส่ง (HTTP vs websockets) ขึ้นอยู่กับปัจจัยที่แตกต่างกันซึ่งเป็นสิ่งที่สำคัญที่สุดไม่ว่าคุณต้องการฟีเจอร์ HTTP (การแคช, การตรวจสอบความถูกต้องใหม่, ความปลอดภัย, idempotence, ประเภทเนื้อหา, หลายส่วน, ... ) หรือว่า ข้อความที่ frecuencies สูง
จนถึงตอนนี้มันเป็นความเห็นส่วนตัวของฉันมากเกี่ยวกับปัญหา แต่ตอนนี้สิ่งที่เป็นประโยชน์สำหรับนักพัฒนา Java ที่อ่านบรรทัดเหล่านี้กรอบที่ฉันได้ทำงานในช่วงปีที่แล้วเกิดจากคำถามเดียวกันที่คุณสงสัยตอนนี้ :
http://rpc.brutusin.org
คุณสามารถดูการสาธิตสดได้ที่นี่แสดงเบราว์เซอร์พื้นที่เก็บข้อมูลในตัวสำหรับการทดสอบการทำงาน (ขอบคุณ JSON Schema) และชุดบริการตัวอย่าง:
http://demo.rpc.brutusin.org
หวังว่าจะช่วยเพื่อน!
Nacho