PUT กับ POST - ความแตกต่างระหว่างพวกเขา

ความแตกต่างที่สำคัญระหว่าง PUT และ POST

  • เมธอด PUT จะถูกเรียกเมื่อคุณต้องการแก้ไขทรัพยากรเดียว ในขณะที่เมธอด POST จะถูกเรียกเมื่อคุณต้องเพิ่มทรัพยากรลูก
  • การตอบกลับด้วยวิธีการ POST สามารถแคชได้ แต่คุณไม่สามารถแคชการตอบกลับด้วยวิธีการ PUT ได้
  • คุณสามารถใช้แบบสอบถาม UPDATE ใน PUT ในขณะที่คุณสามารถใช้สร้างแบบสอบถามใน POST
  • ในวิธี PUT ไคลเอนต์จะตัดสินใจว่าทรัพยากร URI ใดที่ควรมี และในวิธี POST เซิร์ฟเวอร์จะตัดสินใจว่าทรัพยากร URI ใดที่ควรมี
  • PUT ทำงานเฉพาะเจาะจง ในขณะที่ POST ทำงานเป็นนามธรรม
  • หากคุณส่งคำขอ PUT เดียวกันหลายครั้ง ผลลัพธ์จะยังคงเหมือนเดิม แต่หากคุณส่งคำขอ POST เดียวกันหลายครั้ง คุณจะได้รับผลลัพธ์ที่แตกต่างกัน
  • วิธี PUT เป็นแบบ idempotent ในขณะที่วิธี POST ไม่ใช่ idempotent
PUT กับ POST
PUT กับ POST

วิธี PUT คืออะไร?

วิธี PUT ใช้เพื่ออัปเดตทรัพยากรที่มีอยู่บนเซิร์ฟเวอร์ โดยทั่วไปแล้วจะแทนที่สิ่งที่มีอยู่ใน URL เป้าหมายด้วยสิ่งอื่น คุณสามารถใช้เพื่อสร้างทรัพยากรใหม่หรือเขียนทับทรัพยากรที่มีอยู่ได้ PUT ร้องขอว่าเอนทิตีที่แนบมาจะต้องถูกเก็บไว้ภายใต้ URI ที่ร้องขอที่ให้มา (Uniform Resource Identifier)

วิธีการ POST คืออะไร?

POST เป็นวิธีการที่รองรับโดย HTTP และ

แสดงให้เห็นว่าเว็บเซิร์ฟเวอร์ยอมรับข้อมูลที่รวมอยู่ในเนื้อหาของข้อความซึ่งได้รับการร้องขอ POST มักใช้โดย World Wide Web เพื่อส่งข้อมูลที่ผู้ใช้สร้างขึ้นไปยังเว็บเซิร์ฟเวอร์หรือเมื่อคุณอัปโหลดไฟล์

ความแตกต่างระหว่าง PUT และ POST ใน REST API

นี่คือข้อแตกต่างที่สำคัญระหว่างวิธี PUT และ POST:

PUT POST
วิธีนี้เป็นแบบ idempotent วิธีการนี้ไม่ใช่ idempotent
วิธีการ PUT คือการเรียกใช้เมื่อคุณต้องแก้ไขทรัพยากรเดียว ซึ่งเป็นส่วนหนึ่งของการรวบรวมทรัพยากรอยู่แล้ว วิธีการ POST จะถูกเรียกใช้เมื่อคุณต้องเพิ่มทรัพยากรลูกภายใต้การรวบรวมทรัพยากร
RFC-2616 แสดงให้เห็นว่าวิธี PUT ส่งคำขอสำหรับเอนทิตีที่แนบมาซึ่งจัดเก็บไว้ใน URI คำขอที่ให้มา วิธีการนี้ขอให้เซิร์ฟเวอร์ยอมรับเอนทิตีที่อยู่ในคำขอ
ไวยากรณ์วิธี PUT คือ PUT /questions/{question-id} ไวยากรณ์ของวิธีการ POST คือ POST /questions
คุณไม่สามารถแคชการตอบสนองของวิธี PUT คำตอบของวิธี POST สามารถแคชได้
PUT /vi/juice/orders/1234 ระบุว่าคุณกำลังอัปเดตทรัพยากรที่ระบุโดย "1234" POST /vi/juice/orders ระบุว่าคุณกำลังสร้างทรัพยากรใหม่และส่งคืนตัวระบุเพื่ออธิบายทรัพยากร
หากคุณส่งคำขอเดียวกันหลายครั้ง ผลลัพธ์จะยังคงเหมือนเดิม หากคุณส่งคำขอ POST เดียวกันมากกว่าหนึ่งครั้ง คุณจะได้รับผลลัพธ์ที่แตกต่างกัน
PUT ทำงานเฉพาะเจาะจง POST ทำงานเป็นนามธรรม
เราใช้แบบสอบถาม UPDATE ใน PUT เราใช้สร้างแบบสอบถามใน POST
ในวิธี PUT ลูกค้าจะตัดสินใจว่าทรัพยากร URI ใดที่ควรมี ในวิธีการ POST เซิร์ฟเวอร์จะตัดสินใจว่าทรัพยากร URI ใดที่ควรมี

ตัวอย่างของ PUT

นี่คือตัวอย่างเว็บเซิร์ฟเวอร์ของวิธี PUT:

HTTP ใส่ http://www.google.com/users/234

HTTP ใส่ http://www.google.com/users/234/accounts/567

ขอร้อง

PUT /new.html HTTP/1.1
Host: example.com
Content-type: text/html
Content-length: 20

<p>New File</p>

คำตอบ

หากทรัพยากรเป้าหมายมีการนำเสนอในปัจจุบันและได้รับการแก้ไขด้วยสถานะของการนำเสนอแบบปิด เซิร์ฟเวอร์ควรส่งการตอบกลับสองครั้ง รหัสตอบกลับแรกคือ 200 (ตกลง) และรหัสตอบกลับที่สองคือ 204 (ไม่มีเนื้อหา)

หากทรัพยากรเป้าหมายไม่มีการแสดงใดๆ เซิร์ฟเวอร์ควรแจ้งให้ผู้ใช้ทราบโดยการส่งรหัส 201 (สร้างแล้ว) ตอบกลับ

 HTTP/1.1 201 Created
Content-Location: /new.html

ตัวอย่างของ POST

นี่คือตัวอย่างของวิธีการ POST:

HTTP โพสต์ http://www.google.com/users

HTTP โพสต์ http://www.google.com/users/234/accounts

แบบฟอร์มที่ใช้ประเภทเนื้อหาเริ่มต้นของ application/x-www-form-urlencoded:

POST /test HTTP/1.1
Host: abc.example
Content-Type: application/x-www-form-urlencoded
Content-Length: 40

field1=value1&field2=value2

ทดสอบ API ด้วยคำขอ PUT

ต่อไปนี้เป็นขั้นตอนในการทดสอบ API ด้วยคำขอ PUT:

การทดสอบ API ด้วยคำขอ PUT
ทดสอบ API ด้วยคำขอ PUT

ขั้นตอน 1) อัปเดตทรัพยากรด้วยคำขอ PUT

ขั้นตอน 2) ใช้วิธี GET สำหรับทรัพยากร หากคำขอ PUT สำเร็จ คุณจะได้รับข้อมูลใหม่ วิธีนี้จะล้มเหลวหากข้อมูลที่ให้มาในคำขอไม่ถูกต้อง ดังนั้นจึงจะไม่อัพเดทอะไรเลย

ทดสอบ API ด้วยคำขอ POST

ต่อไปนี้เป็นขั้นตอนในการทดสอบ API ด้วยคำขอ POST:

ทดสอบ API ด้วยคำขอ POST

ทดสอบ API ด้วยคำขอ POST

ขั้นตอน 1) สร้างทรัพยากรโดยใช้คำขอ POST และตรวจสอบให้แน่ใจว่าส่งคืนรหัสสถานะ 200

ขั้นตอน 2) สร้างคำขอ GET สำหรับทรัพยากรนั้นและบันทึกข้อมูลในรูปแบบที่ถูกต้อง

ขั้นตอน 3) คุณต้องเพิ่มการทดสอบเพื่อให้แน่ใจว่าคำขอ POST ล้มเหลวด้วยข้อมูลที่ไม่ถูกต้อง

ข้อดีของวิธี PUT

นี่คือข้อดี/ประโยชน์ของการใช้วิธี PUT:

  • ช่วยให้คุณจัดเก็บเอนทิตีที่ให้มาภายใต้ URI ที่ให้มา
  • หากเอนทิตีที่ให้มามีอยู่แล้ว คุณสามารถดำเนินการอัปเดต หรือคุณสามารถสร้างด้วย URI นั้นได้
  • คุณสามารถสร้างทรัพยากรได้บ่อยเท่าที่คุณต้องการ
  • การสร้างทรัพยากรด้วยวิธี PUT นั้นง่ายมาก
  • คุณไม่จำเป็นต้องตรวจสอบว่าผู้ใช้คลิกปุ่มส่งหลายครั้งหรือไม่
  • สามารถระบุเอนทิตีที่แนบมาพร้อมกับคำขอได้

ข้อดีของวิธี POST

ต่อไปนี้เป็นข้อดี/ประโยชน์ของการใช้วิธี POST:

  • เมธอดนี้ช่วยให้คุณกำหนด URI ของทรัพยากรได้
  • การระบุส่วนหัวตำแหน่งทรัพยากรใหม่ทำได้ง่ายมากโดยใช้ส่วนหัวตำแหน่ง
  • คุณสามารถส่งคำขอเพื่อยอมรับเอนทิตีเป็นผู้ใต้บังคับบัญชาใหม่ของทรัพยากร ซึ่งระบุโดย URI
  • คุณสามารถส่งข้อมูลที่ผู้ใช้สร้างขึ้นไปยังเว็บเซิร์ฟเวอร์
  • มันมีประโยชน์มากเมื่อคุณไม่ทราบ URL ที่จะเก็บทรัพยากรใด ๆ
  • ใช้ POST เมื่อคุณต้องการเซิร์ฟเวอร์ ซึ่งควบคุมการสร้าง URL ของทรัพยากรของคุณ
  • POST เป็นวิธีการที่ปลอดภัย เนื่องจากคำขอไม่อยู่ในประวัติเบราว์เซอร์
  • คุณสามารถส่งข้อมูลจำนวนมากได้อย่างง่ายดายโดยใช้โพสต์
  • คุณสามารถเก็บข้อมูลส่วนตัวได้
  • วิธีนี้สามารถใช้ในการส่งข้อมูลไบนารี่และข้อมูล ASCII