ความแตกต่างระหว่างวิธี PUT, POST และ PATCH ในโปรโตคอล HTTP คืออะไร?
ความแตกต่างระหว่างวิธี PUT, POST และ PATCH ในโปรโตคอล HTTP คืออะไร?
คำตอบ:
ความแตกต่างระหว่าง PUT, POST, GET, DELETE และ PATCH ใน HTTP Verbs:
คำกริยา HTTP POST, GET, PUT, DELETE ที่ใช้กันมากที่สุดนั้นคล้ายกับ CRUD (สร้าง, อ่าน, อัปเดตและลบ) ในฐานข้อมูล เราระบุกิริยา HTTP เหล่านี้ในเมืองหลวงกรณี ดังนั้นด้านล่างคือการเปรียบเทียบระหว่างพวกเขา
PATCH:ส่งการแก้ไขบางส่วนให้กับทรัพยากร หากคุณต้องการอัปเดตเพียงหนึ่งฟิลด์สำหรับทรัพยากรคุณอาจต้องการใช้วิธีการ PATCH
หมายเหตุ:
เนื่องจาก POST, PUT, DELETE จะแก้ไขเนื้อหาการทดสอบด้วย Fiddler สำหรับ URL ด้านล่างเพียงแค่ทำการอัปเดต ไม่ลบหรือแก้ไขจริง เราสามารถเห็นรหัสสถานะเพื่อตรวจสอบว่ามีการแทรกการอัพเดตการลบหรือไม่
URL: http://jsonplaceholder.typicode.com/posts/
1) รับ:
GET เป็นวิธีการขอ HTTP แบบง่ายที่สุด เบราว์เซอร์ที่ใช้ในแต่ละครั้งที่คุณคลิกลิงก์หรือพิมพ์ URL ลงในแถบที่อยู่ แนะนำให้เซิร์ฟเวอร์ส่งข้อมูลที่ระบุโดย URL ไปยังไคลเอนต์ ข้อมูลไม่ควรถูกแก้ไขบนฝั่งเซิร์ฟเวอร์อันเป็นผลมาจากการร้องขอ GET ในกรณีนี้คำขอ GET เป็นแบบอ่านอย่างเดียว
การตรวจสอบกับ Fiddler หรือ PostMan: เราสามารถใช้ Fiddler เพื่อตรวจสอบการตอบสนอง เปิด Fiddler แล้วเลือกแท็บเขียน ระบุคำกริยาและ URL ดังแสดงด้านล่างและคลิกดำเนินการเพื่อตรวจสอบการตอบสนอง
กริยา: GET
url: http://jsonplaceholder.typicode.com/posts/
การตอบสนอง:คุณจะได้รับการตอบกลับเป็น:
"userId": 1, "id": 1, "title": "sunt aut ... ", "body": "quia et suscipit ... "
ในเส้นทาง“ ความสุข” (หรือไม่ใช่ข้อผิดพลาด) GET จะส่งคืนการแทนค่าใน XML หรือ JSON และรหัสตอบกลับ HTTP 200 (OK) ในกรณีที่เกิดข้อผิดพลาดส่วนใหญ่มักจะส่งคืน 404 (ไม่พบ) หรือ 400 (คำขอที่ไม่ดี)
2) โพสต์:
กริยา POST ส่วนใหญ่จะใช้เพื่อสร้างแหล่งข้อมูลใหม่ โดยเฉพาะอย่างยิ่งมันถูกใช้เพื่อสร้างทรัพยากรรอง นั่นคือผู้ใต้บังคับบัญชาทรัพยากรอื่น ๆ (เช่นผู้ปกครอง)
เมื่อสร้างสำเร็จให้ส่งคืนสถานะ HTTP 201 โดยส่งคืนส่วนหัว Location พร้อมลิงก์ไปยังทรัพยากรที่สร้างขึ้นใหม่พร้อมสถานะ 201 HTTP
การตรวจสอบกับ Fiddler หรือ PostMan: เราสามารถใช้ Fiddler เพื่อตรวจสอบการตอบสนอง เปิด Fiddler แล้วเลือกแท็บเขียน ระบุคำกริยาและ URL ดังแสดงด้านล่างและคลิกดำเนินการเพื่อตรวจสอบการตอบสนอง
กริยา: POST
url: http://jsonplaceholder.typicode.com/posts/
คำขอร่างกาย:
ข้อมูล: {หัวเรื่อง: 'foo', เนื้อหา: 'bar', หมายเลขผู้ใช้: 1000, รหัส: 1000}
การตอบสนอง:คุณจะได้รับรหัสตอบกลับเป็น 201
หากเราต้องการตรวจสอบบันทึกที่แทรกด้วย Id = 1,000 เปลี่ยนคำกริยาเป็น Get และใช้ url เดียวกันแล้วคลิก Execute
ดังที่ได้กล่าวไว้ก่อนหน้านี้ URL ข้างต้นอนุญาตให้อ่าน (GET) เท่านั้นเราไม่สามารถอ่านข้อมูลที่อัปเดตเป็นจริงได้
3) ใส่:
PUT ถูกใช้บ่อยที่สุดสำหรับความสามารถในการอัปเดต PUT-ing ไปยัง URI ทรัพยากรที่รู้จักพร้อมกับเนื้อความคำขอที่มีการแสดงการปรับปรุงใหม่ของทรัพยากรดั้งเดิม
การตรวจสอบกับ Fiddler หรือ PostMan: เราสามารถใช้ Fiddler เพื่อตรวจสอบการตอบสนอง เปิด Fiddler แล้วเลือกแท็บเขียน ระบุคำกริยาและ URL ดังแสดงด้านล่างและคลิกดำเนินการเพื่อตรวจสอบการตอบสนอง
กริยา: PUT
url: http://jsonplaceholder.typicode.com/posts/1
คำขอร่างกาย:
ข้อมูล: {หัวเรื่อง: 'foo', เนื้อหา: 'bar', userId: 1, Id: 1}
การตอบสนอง:เมื่ออัปเดตสำเร็จจะส่งคืน 200 (หรือ 204 หากไม่ส่งคืนเนื้อหาใด ๆ ในร่างกาย) จาก PUT
4) ลบ:
DELETE นั้นง่ายต่อการเข้าใจ มันถูกใช้เพื่อลบทรัพยากรที่ระบุโดย URI
เมื่อลบสำเร็จให้ส่งคืนสถานะ HTTP 200 (OK) พร้อมกับเนื้อหาการตอบกลับซึ่งอาจแสดงรายการที่ถูกลบ (มักต้องการแบนด์วิดท์มากเกินไป) หรือการตอบกลับแบบห่อ (ดูค่าส่งคืนด้านล่าง) ไม่ว่าจะเป็นหรือส่งคืนสถานะ HTTP 204 (ไม่มีเนื้อหา) โดยไม่มีเนื้อหาตอบกลับ กล่าวอีกนัยหนึ่งสถานะ 204 ที่ไม่มีเนื้อหาหรือการตอบสนองสไตล์ JSEND และสถานะ HTTP 200 เป็นคำตอบที่แนะนำ
การตรวจสอบกับ Fiddler หรือ PostMan: เราสามารถใช้ Fiddler เพื่อตรวจสอบการตอบสนอง เปิด Fiddler แล้วเลือกแท็บเขียน ระบุคำกริยาและ URL ดังแสดงด้านล่างและคลิกดำเนินการเพื่อตรวจสอบการตอบสนอง
กริยา: DELETE
url: http://jsonplaceholder.typicode.com/posts/1
การตอบสนอง:เมื่อลบสำเร็จจะส่งคืนสถานะ HTTP 200 (OK) พร้อมกับเนื้อหาการตอบกลับ
ตัวอย่างระหว่าง PUT และ PATCH
PUT
ถ้าฉันต้องเปลี่ยนชื่อของฉันจากนั้นส่งคำขอ PUT สำหรับอัปเดต:
{"first": "Nazmul", "last": "hasan"} ดังนั้นที่นี่เพื่ออัปเดตชื่อแรกเราจำเป็นต้องส่งพารามิเตอร์ทั้งหมดของข้อมูลอีกครั้ง
ปะ:
คำขอแก้ไขระบุว่าเราจะส่งข้อมูลที่เราต้องการแก้ไขโดยไม่ต้องแก้ไขหรือมีผลต่อส่วนอื่น ๆ ของข้อมูล ตัวอย่าง: หากเราต้องการอัปเดตเฉพาะชื่อแรกเราจะส่งเฉพาะชื่อแรกเท่านั้น
โปรดอ้างอิงลิงค์ด้านล่างสำหรับข้อมูลเพิ่มเติม:
https://jsonplaceholder.typicode.com/
https://github.com/typicode/jsonplaceholder#how-to
PUT = แทนที่ทรัพยากรทั้งหมดด้วยการเป็นตัวแทนใหม่ที่มีให้
PATCH = แทนที่ส่วนต่าง ๆ ของแหล่งข้อมูลด้วยค่าที่ให้ไว้และ | หรือส่วนอื่น ๆ ของทรัพยากรได้รับการอัปเดตที่คุณไม่ได้จัดเตรียมไว้ (เวลาประทับ) และ | หรือการอัปเดตทรัพยากรผลกระทบทรัพยากรอื่น ๆ (ความสัมพันธ์)
คำจำกัดความด้านล่างมาจากตัวอย่างในโลกแห่งความจริง
ภาพรวมตัวอย่าง
สำหรับทุกข้อมูลลูกค้าเรากำลังจัดเก็บตัวระบุเพื่อค้นหาข้อมูลลูกค้านั้นและเราจะส่งตัวระบุนั้นกลับไปยังลูกค้ารายนั้นเพื่อการอ้างอิง
โพสต์
PUT
ปะ
หมายเหตุ: ในวิธีการใส่เราจะไม่ส่งข้อยกเว้นหากไม่พบตัวระบุ แต่ในวิธีการแก้ไขเรากำลังโยนข้อยกเว้นหากไม่พบตัวระบุ
แจ้งให้เราทราบหากคุณมีข้อสงสัยใด ๆ ข้างต้น
GET / PUT คือ idempotent PATCH อาจเป็น idempotent ในบางครั้ง
idempotent คืออะไร - หมายความว่าถ้าเราใช้การสืบค้นหลายครั้งมันก็ไม่ควรกระทบกับผลลัพธ์ของมัน (เอาท์พุทเดียวกันสมมติว่าวัวกำลังท้องและถ้าเราผสมพันธุ์อีกครั้งมันจะไม่สามารถตั้งครรภ์ได้หลายครั้ง)
get
: -รับง่าย รับข้อมูลจากเซิร์ฟเวอร์และแสดงให้ผู้ใช้เห็น
{
id:1
name:parth
email:x@x.com
}
post
: -สร้างทรัพยากรใหม่ที่ฐานข้อมูล มันหมายถึงมันจะเพิ่มข้อมูลใหม่ มันไม่ใช่ idempotent
put
: -สร้างทรัพยากรใหม่เพิ่มเป็นอย่างอื่น Idempotent เพราะมันจะอัพเดททรัพยากรเดียวกันทุกครั้งและผลลัพธ์จะเหมือนกัน อดีต - ข้อมูลเริ่มต้น
{
id:1
name:parth
email:x@x.com
}
{
id:1
email:ppp@ppp.com
}
patch
ดังนั้นตอนนี้ขอแพทช์ PATCH สามารถ idempotent บางครั้ง
id:1
name:parth
email:x@x.com
}
ชื่อแพทช์: w
{
id:1
name:w
email:x@x.com
}
วิธี HTTP รับใช่ หมายเลขโพสต์ ใส่ใช่ แพทช์ไม่มี * ตัวเลือกใช่ หัวใช่ ลบใช่
แหล่งข้อมูล: Idempotent - Idempotency คืออะไร
นี่คือคำอธิบายง่ายๆของทั้งหมด:
ความแตกต่างหลักระหว่างคำร้องขอ PUTและPATCH :
สมมติว่าเรามีทรัพยากรที่มีชื่อและนามสกุลของบุคคล
ถ้าเราต้องการเปลี่ยนชื่อจากนั้นเราจะส่งคำขอวางสำหรับการปรับปรุง
{ "first": "Michael", "last": "Angelo" }
ที่นี่แม้ว่าเราจะเปลี่ยนชื่อเท่านั้นโดยคำขอ PUT เราจะต้องส่งพารามิเตอร์ทั้งตัวแรกและตัวสุดท้าย
กล่าวอีกนัยหนึ่งคือจำเป็นต้องส่งค่าทั้งหมดอีกครั้ง
อย่างไรก็ตามเมื่อเราส่งคำขอ PATCH เราจะส่งข้อมูลที่เราต้องการอัปเดตเท่านั้น กล่าวอีกนัยหนึ่งเราเพียงส่งชื่อเพื่ออัปเดตไม่จำเป็นต้องส่งนามสกุล
ตรรกะค่อนข้างแตกต่างระหว่าง PUT และ PATCH WRT ส่งข้อมูลเต็ม & บางส่วนเพื่อแทนที่ / อัปเดตตามลำดับ อย่างไรก็ตามเพียงสองจุดดังต่อไปนี้
คิดแบบนี้ ...
POST - สร้าง
PUT - แทนที่
PATCH - อัปเดต
รับ - อ่าน
DELETE - ลบ
คำอธิบายที่ง่ายที่สุด:
POST - สร้างบันทึกใหม่
PUT - หากมีบันทึกอยู่ให้อัพเดทเป็นอื่นให้สร้างระเบียนใหม่
PATCH - อัปเดต
รับ - อ่าน
DELETE - ลบ