POST / Redirect / GET ด้วยการส่งแบบฟอร์มที่ไม่ถูกต้อง?


11

ในด้านการพัฒนาเว็บคุณควรทำPOST / Redirect / GET หรือไม่เมื่อเขตข้อมูลในการส่งแบบฟอร์มไม่ถูกต้องเช่นกัน?

โดยทั่วไปแล้วจะไม่มีธุรกรรมที่ละเอียดอ่อนเกิดขึ้นในเหตุการณ์นี้ อย่างไรก็ตามการโต้แย้งสามารถทำเช่นนั้นได้ยังคงเป็นวิธีที่ดีในการใช้รูปแบบ POST / Redirect / GET?

คำตอบ:


10

จากมุมมอง REST การสนทนาผ่านเว็บควรเป็นเช่นนี้

รับ / ตัวอย่าง

200 OK - มี HTML ในรูปแบบเปล่า

ผู้ใช้กรอกข้อมูลในแบบฟอร์ม

POST / ตัวอย่าง

formfield1 = ok

formfield2 = ไม่ดี

400 BAD REQUEST - บรรจุ HTML ในแบบฟอร์มที่มีประชากรซึ่งมีข้อผิดพลาด

ผู้ใช้ระบุปัญหาด้วยการส่งแบบฟอร์มและแก้ไข

POST / ตัวอย่าง

formfield1 = ok

formfield2 = คงที่

201 CREATED - มี HTML พร้อมข้อความยืนยันและลิงค์ต่อไป (เช่นส่วนหัว Location สำหรับไคลเอนต์ REST) ​​หรือ 200 OK และ 204 NO เนื้อหาไม่เป็นที่ยอมรับ

ไม่จำเป็นต้องแนะนำการเปลี่ยนเส้นทางและมันจะทำลายความหมายของการสนทนาให้ทำ


1
โอ้วววฉันจะลืมเรื่อง REST ได้อย่างไรหรือแค่รหัสสถานะ HTTP ที่แตกต่างกันโดยทั่วไป ฉันมีสมองผายลมเมื่อถามคำถามนี้ ขอบคุณ!
Dabbler ที่มีคุณค่า

1
แม้ว่าการเปลี่ยนเส้นทางในรูปแบบ PRG นั้นมีสาเหตุมาจากการยอมรับว่าการรักษา "ความหมายของการสนทนา" นั้นมีความสำคัญน้อยกว่าการป้องกันไม่ให้ผู้ใช้ที่มีความสนใจจากการทำแผนที่ F5 และเพิกเฉยต่อ "ที่จะส่งแบบฟอร์ม .. " เบราว์เซอร์ของพวกเขา
Carson63000

ยุติธรรมมากซึ่งเป็นเหตุผลที่ฉันพูดถึงมุมมองส่วนที่เหลือ
Gary Rowe

5

ฉันจะบอกว่าโดยทั่วไปไม่ได้เนื่องจากเมื่อฟอร์มถูกโพสต์ด้วยเขตข้อมูลที่ไม่ถูกต้องสิ่งที่คุณต้องการให้บริการตามปกติคือรูปแบบเดียวกันกับประชากรเขตข้อมูลเดียวกันรวมถึงข้อความแสดงข้อผิดพลาดบางอย่าง นี่จะเป็นเรื่องยากที่จะดำเนินการผ่าน POST / Redirect / GET - คุณจะมั่นใจได้อย่างไรว่าหน้าเว็บที่ GET ส่งคืนมานั้นมีรายการของผู้ใช้ในเขตข้อมูลฟอร์มแล้ว


2
โดยการจัดเก็บผลลัพธ์ไว้ชั่วคราวในเซสชัน (สำหรับระยะเวลาหนึ่งคำขอติดตาม)
Dabbler ที่มีคุณค่า

2
@fireeyedboy: อ๋อนั่นจะทำยังไง ..
Carson63000
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.