POST /重定向/ GET与无效的表单提交?


Answers:


10

从REST的角度来看,网络对话应该像这样

GET /示例

200 OK-包含空白表格HTML

用户填写表格

POST /示例

formfield1 =确定

formfield2 =坏

400错误的请求-包含带有错误的填充表单HTML

用户确定表单提交的问题并进行修复

POST /示例

formfield1 =确定

formfield2 =固定

201已创建-包含带有成功消息和向前链接的HTML(以及REST客户端的位置标头),也可以接受200 OK和204 NO CONTENT

无需引入重定向,这样做会破坏会话的语义。


1
哇,是的,我怎么会忘记REST,或者一般来说只是不同的HTTP状态代码。问这个问题时,我很放屁。谢谢!
体面的达伯尔

1
但是,PRG模式中的重定向是由于承认保持“对话的语义”不如防止僵硬的用户捣碎F5并忽略“将重新提交表单的..”警告重要。他们的浏览器。
Carson63000

足够公平,这就是为什么我提到REST观点。
加里·罗

5

我通常不会这样说,因为当表单中张贴的字段无效时,您通常希望提供的响应是具有相同字段填充的相同表单以及一些错误消息。通过POST / Redirect / GET执行该操作很麻烦-您如何确保GET返回的页面已经在表单字段中包含用户的条目?


2
通过将结果临时存储在会话中(在一个后续请求的持续时间内)?
体面的达伯尔

2
@fireeyedboy:是的,那样就可以了。
Carson63000
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.