วิธี "RESTful" ในการเพิ่มการดำเนินการที่ไม่ใช่ CRUD ไปยังบริการ RESTful คืออะไร สมมติว่าฉันมีบริการที่อนุญาตให้ CRUD เข้าถึงบันทึกเช่นนี้:
GET /api/car/123 <- Returns information for the Car object with ID 123
POST /api/car <- Creates a new car (with properties in the request)
PUT /api/car/123 <- Updates car 123 (with properties in the request)
DELETE /api/car/123 <- Deletes car 123
POST /api/car/123/wheel/ <- Creates a wheel and associates it to car 123
ถ้าฉันต้องการเปลี่ยนสีรถฉันก็แค่POST /api/car/123
ใส่ตัวแปร POST สำหรับสีใหม่
แต่สมมติว่าฉันต้องการซื้อรถและการดำเนินการนั้นซับซ้อนกว่าการอัปเดตทรัพย์สิน "รถที่เป็นเจ้าของ" ของ "ผู้ใช้" เป็นเรื่องที่น่ายินดีหรือไม่ที่จะทำอะไรบางอย่างเช่นPOST /api/car/123/purchase
โดยที่คำว่า "ซื้อ" เป็นชื่อวิธีการเป็นหลัก หรือฉันควรใช้กริยา HTTP ที่กำหนดเองเช่นPURCHASE
แทนPOST
?
หรือการดำเนินการที่ไม่ใช่ CRUD อยู่นอกขอบเขตของ REST หรือไม่
PATCH /api/car/123
และส่งพารามิเตอร์สีหรือใช้PUT /api/car/123
และส่งวัตถุรถทั้งหมด POST จะอนุมานได้ว่าคุณกำลังสร้างรถคันใหม่และไม่ควรใส่รหัสที่ท้าย URL