POST / Redirect / GET với biểu mẫu không hợp lệ?


11

Trong lĩnh vực phát triển web, có nên thực hiện POST / Redirect / GET khi các trường trong một biểu mẫu không hợp lệ không?

Thông thường, không có giao dịch nhạy cảm sẽ xảy ra, trong sự kiện này. Tuy nhiên, dù sao đi nữa, một cuộc tranh luận có thể được đưa ra rằng việc sử dụng mẫu POST / Redirect / GET vẫn là một cách thực hành tốt?

Câu trả lời:


10

Từ góc độ REST, cuộc trò chuyện trên web sẽ diễn ra như thế này

NHẬN / ví dụ

200 OK - chứa HTML dạng trống

Người dùng điền vào mẫu

BÀI / ví dụ

formfield1 = ok

formfield2 = xấu

400 BAD YÊU CẦU - chứa HTML dạng dân cư có lỗi

Người dùng xác định sự cố với việc gửi biểu mẫu và khắc phục sự cố

BÀI / ví dụ

formfield1 = ok

formfield2 = đã sửa

201 CREATED - chứa HTML với thông báo thành công và các liên kết trở đi (cũng là tiêu đề Vị trí cho các máy khách REST) ​​hoặc 200 OK và 204 KHÔNG CÓ NỘI DUNG nào được chấp nhận

Không cần phải giới thiệu một chuyển hướng, và nó sẽ phá vỡ ngữ nghĩa của cuộc trò chuyện để làm như vậy.


1
Ồ, vâng, làm thế nào tôi có thể quên về REST hoặc nói chung chỉ là các mã trạng thái HTTP khác nhau. Tôi đã bị rắm não khi đặt câu hỏi này. Cảm ơn!
Dabbler Decent

1
Tuy nhiên, việc chuyển hướng trong mẫu PRG là do một sự thừa nhận rằng việc duy trì "ngữ nghĩa của cuộc hội thoại" không quan trọng bằng việc ngăn người dùng ham hố nghiền nát F5 và bỏ qua cảnh báo "sẽ gửi lại biểu mẫu .." trình duyệt của họ.
Carson63000

Đủ công bằng, đó là lý do tại sao tôi đề cập đến quan điểm REST.
Gary Rowe

5

Tôi thường nói là không, với lý do khi một biểu mẫu được POST với các trường không hợp lệ, những gì bạn thường muốn phục vụ trong phản hồi là cùng một biểu mẫu với cùng một dân số trường, cộng với một số thông báo lỗi. Điều này sẽ được thực hiện thông qua POST / Redirect / GET - làm thế nào bạn có thể đảm bảo rằng trang được trả về bởi GET đã có các mục nhập của người dùng trong các trường mẫu?


2
Bằng cách lưu trữ tạm thời kết quả trong một phiên (trong thời gian một yêu cầu tiếp theo)?
Dabbler Decent

2
@fireeyedboy: vâng, điều đó sẽ làm điều đó .. có vẻ như một chút bùn.
Carson63000
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.