ประการแรกการโอนเงินคืออะไรที่คุณไม่สามารถทำได้ในการเรียกใช้ทรัพยากรเดียว การกระทำที่คุณต้องการจะส่งเงิน ดังนั้นคุณเพิ่มทรัพยากรการโอนเงินไปยังบัญชีของผู้ส่ง
POST: accounts/alice, new Transfer {target:"BOB", abmount:100, currency:"CHF"}.
เสร็จสิ้น คุณไม่จำเป็นต้องรู้ว่านี่เป็นธุรกรรมที่ต้องเป็นปรมาณูเป็นต้นคุณเพิ่งโอนเงินหรือที่รู้จัก ส่งเงินจาก A ถึง B
แต่สำหรับกรณีที่หายากนี่เป็นคำตอบทั่วไป:
หากคุณต้องการทำสิ่งที่ซับซ้อนมากที่เกี่ยวข้องกับทรัพยากรจำนวนมากในบริบทที่กำหนดพร้อมกับข้อ จำกัด มากมายที่ข้ามสิ่งกีดขวางทางธุรกิจและความรู้ในการติดตั้งคุณต้องโอนสถานะ เนื่องจาก REST ควรไร้สถานะคุณเนื่องจากลูกค้าจำเป็นต้องโอนสถานะไปรอบ ๆ
หากคุณโอนสถานะคุณต้องซ่อนข้อมูลภายในจากลูกค้า ลูกค้าไม่ควรทราบข้อมูลภายในที่จำเป็นสำหรับการดำเนินการ แต่ไม่นำข้อมูลที่เกี่ยวข้องในแง่ของธุรกิจมาใช้ หากข้อมูลเหล่านั้นไม่มีคุณค่าทางธุรกิจรัฐควรได้รับการเข้ารหัสและอุปมาอุปมัยเช่นโทเค็นต้องผ่านหรือสิ่งที่ต้องใช้
วิธีนี้สามารถส่งผ่านสถานะภายในไปรอบ ๆ และใช้การเข้ารหัสและการเซ็นชื่อระบบสามารถยังคงปลอดภัยและเสียง การค้นหาสิ่งที่เป็นนามธรรมที่ถูกต้องสำหรับลูกค้าว่าทำไมเขาถึงส่งข้อมูลรัฐให้เป็นเรื่องที่ขึ้นอยู่กับการออกแบบและสถาปัตยกรรม
ทางออกที่แท้จริง:
โปรดจำไว้ว่า REST กำลังพูดถึง HTTP และ HTTP มาพร้อมกับแนวคิดการใช้คุกกี้ คุกกี้เหล่านั้นมักถูกลืมเมื่อผู้คนพูดถึง REST API และเวิร์กโฟลว์และการโต้ตอบซึ่งครอบคลุมทรัพยากรหรือคำขอหลายอย่าง
จำสิ่งที่เขียนใน Wikipedia เกี่ยวกับคุกกี้ HTTP:
คุกกี้ถูกออกแบบมาให้เป็นกลไกที่เชื่อถือได้สำหรับเว็บไซต์เพื่อจดจำข้อมูลที่เป็นรัฐ (เช่นรายการในตะกร้าสินค้า) หรือเพื่อบันทึกกิจกรรมการท่องเว็บของผู้ใช้ (รวมถึงการคลิกปุ่มเฉพาะการเข้าสู่ระบบหรือบันทึกหน้าเว็บที่ผู้ใช้เยี่ยมชม ย้อนกลับไปเมื่อหลายเดือนหรือหลายปีก่อน)
ดังนั้นโดยทั่วไปหากคุณต้องการส่งต่อสถานะให้ใช้คุกกี้ มันถูกออกแบบด้วยเหตุผลเดียวกันอย่างมากมันเป็น HTTP และดังนั้นจึงเข้ากันได้กับ REST โดยการออกแบบ :)
ทางออกที่ดีกว่า:
หากคุณพูดคุยเกี่ยวกับไคลเอนต์ที่ดำเนินงานเวิร์กโฟลว์ที่เกี่ยวข้องกับการร้องขอหลายครั้งคุณมักจะพูดคุยเกี่ยวกับโปรโตคอล โปรโตคอลทุกรูปแบบมาพร้อมกับชุดเงื่อนไขเบื้องต้นสำหรับแต่ละขั้นตอนที่อาจเกิดขึ้นเช่นทำตามขั้นตอน A ก่อนที่คุณจะสามารถทำ B
นี่เป็นเรื่องธรรมดา แต่การเปิดเผยโปรโตคอลให้กับลูกค้าทำให้ทุกอย่างซับซ้อนขึ้น เพื่อหลีกเลี่ยงเพียงคิดสิ่งที่เราทำเมื่อเราต้องทำปฏิสัมพันธ์ที่ซับซ้อนและสิ่งต่าง ๆ ในโลกแห่งความจริง ... เราใช้ตัวแทน
การใช้คำเปรียบเทียบตัวแทนคุณสามารถจัดหาทรัพยากรที่สามารถทำตามขั้นตอนที่จำเป็นทั้งหมดสำหรับคุณและเก็บการมอบหมาย / คำสั่งจริงที่ทำในรายการ (เพื่อให้เราสามารถใช้ POST ในตัวแทนหรือ 'ตัวแทน')
ตัวอย่างที่ซับซ้อน:
ซื้อบ้าน:
คุณต้องพิสูจน์ความน่าเชื่อถือของคุณ (เช่นการให้ข้อมูลบันทึกของตำรวจ) คุณต้องตรวจสอบรายละเอียดทางการเงินคุณต้องซื้อบ้านที่แท้จริงโดยใช้ทนายความและบุคคลที่สามที่เชื่อถือได้เก็บเงินตรวจสอบว่าบ้านของคุณเป็นของคุณหรือไม่ เพิ่มสิ่งที่ซื้อลงในบันทึกภาษีของคุณ ฯลฯ (เช่นเป็นตัวอย่างบางขั้นตอนอาจผิดหรืออะไรก็ตาม)
ขั้นตอนเหล่านี้อาจใช้เวลาหลายวันกว่าจะเสร็จสมบูรณ์บางขั้นตอนสามารถทำขนานกันได้เป็นต้น
ในการทำเช่นนี้คุณเพียงแค่ให้ตัวแทนงานซื้อบ้านเช่น:
POST: agency.com/ { task: "buy house", target:"link:toHouse", credibilities:"IamMe"}.
เสร็จสิ้น เอเจนซี่จะส่งการอ้างอิงถึงคุณกลับคืนให้คุณซึ่งคุณสามารถใช้เพื่อดูและติดตามสถานะของงานนี้และตัวแทนที่เหลือจะทำโดยอัตโนมัติ
คิดเกี่ยวกับการติดตามข้อผิดพลาดเช่น โดยทั่วไปคุณรายงานข้อผิดพลาดและสามารถใช้รหัสข้อผิดพลาดเพื่อตรวจสอบสิ่งที่เกิดขึ้น คุณสามารถใช้บริการเพื่อฟังการเปลี่ยนแปลงของทรัพยากรนี้ เสร็จสิ้นภารกิจ