โปรดจำไว้ว่าด้วย REST API ทุกคำถามของมุมมองของคุณ
แนวคิดหลักสองข้อใน REST API คือจุดสิ้นสุดและทรัพยากร (เอนทิตี) จุดสิ้นสุดอย่างใดอย่างหนึ่งปลายทางส่งคืนทรัพยากรผ่าน GET หรือยอมรับทรัพยากรผ่าน POST และ PUT และอื่น ๆ (หรือการรวมกันของข้างต้น)
เป็นที่ยอมรับกันว่าด้วย POST ข้อมูลที่คุณส่งอาจมีหรือไม่มีผลในการสร้างทรัพยากรใหม่และปลายทางที่เกี่ยวข้องซึ่งน่าจะไม่ใช่ "สด" ภายใต้ URL POSTed กล่าวอีกนัยหนึ่งเมื่อคุณโพสต์คุณส่งข้อมูลเพื่อจัดการ จุดสิ้นสุด POST ไม่ใช่ตำแหน่งที่อาจพบทรัพยากรได้ตามปกติ
ข้อความอ้างอิงจากRFC 2616 (โดยไม่ใส่ส่วนที่ไม่เกี่ยวข้องออกและเน้นส่วนที่เกี่ยวข้อง):
9.5 โพสต์
เมธอด POST ใช้เพื่อร้องขอให้เซิร์ฟเวอร์ต้นทางยอมรับเอนทิตีที่อยู่ในคำขอเป็นผู้ใต้บังคับบัญชาใหม่ของทรัพยากรที่ระบุโดย Request-URI ใน Request-Line POST ได้รับการออกแบบมาเพื่อให้วิธีการแบบเดียวกันครอบคลุมฟังก์ชั่นต่อไปนี้:
- ...
- การจัดเตรียมบล็อกข้อมูลเช่นผลลัพธ์ของการส่งแบบฟอร์มไปยังกระบวนการจัดการข้อมูล
- ...
...
การกระทำที่ดำเนินการโดยวิธีการโพสต์อาจจะไม่ส่งผลให้ทรัพยากรที่สามารถระบุด้วย URI ในกรณีนี้ 200 (OK) หรือ 204 (ไม่มีเนื้อหา) เป็นสถานะการตอบสนองที่เหมาะสมขึ้นอยู่กับว่าการตอบสนองนั้นมีเอนทิตีที่อธิบายผลลัพธ์หรือไม่
หากมีการสร้างทรัพยากรบนเซิร์ฟเวอร์ต้นทางการตอบสนองควรเป็น 201 (สร้างขึ้น) ...
เราได้คุ้นเคยกับอุปกรณ์ปลายทางและทรัพยากรที่เป็นตัวแทนของ 'สิ่งของ' หรือ 'ข้อมูล' ไม่ว่าจะเป็นผู้ใช้ข้อความหนังสือไม่ว่าโดเมนจะเป็นปัญหาก็ตาม อย่างไรก็ตามจุดปลายสามารถเปิดเผยทรัพยากรที่แตกต่าง - ตัวอย่างเช่นผลการค้นหา
ลองพิจารณาตัวอย่างต่อไปนี้:
GET /books?author=AUTHOR
POST /books
PUT /books/ID
DELETE /books/ID
นี่คือ REST CRUD ทั่วไป อย่างไรก็ตามถ้าเราเพิ่ม:
POST /books/search
{
"keywords": "...",
"yearRange": {"from": 1945, "to": 2003},
"genre": "..."
}
ไม่มีอะไรที่ไม่สงบสำหรับจุดสิ้นสุดนี้ ยอมรับข้อมูล (เอนทิตี) ในรูปแบบของเนื้อความที่ร้องขอ ข้อมูลนั้นเป็นเกณฑ์การค้นหา - DTO เหมือนกัน ปลายทางนี้ผลิตทรัพยากร (นิติบุคคล) ในการตอบสนองต่อการร้องขอ: ผลลัพธ์การค้นหา ทรัพยากรผลการค้นหาเป็นทรัพยากรชั่วคราวให้บริการแก่ลูกค้าทันทีโดยไม่มีการเปลี่ยนเส้นทางและไม่มีการเปิดเผยจาก url อื่นที่เป็นที่ยอมรับ
ยังคงเป็น REST ยกเว้นเอนทิตีไม่ใช่หนังสือ - เอนทิตีที่ร้องขอคือเกณฑ์การค้นหาหนังสือและเอนทิตีการตอบสนองคือผลลัพธ์การค้นหาหนังสือ