我有一个Web服务,提交表单并产生三元响应:
Web服务和网站内容是两个不同的应用程序,并且是分离的。
Web服务不知道应该在3种状态下向客户端显示的特定内容,因此必须依赖重定向到客户端提供的URL作为隐藏表单字段:
<form action="http://localhost:8001/submissions" method="POST">
<input type="text" name="email" />
<input type="hidden" name="success" value="file:///thankyou.html" />
<input type="hidden" name="client_error" value="file:///client_error.html" />
<input type="hidden" name="server_error" value="file:///server_error.html" />
<input type="submit" value="Submit" />
</form>
应用程序当前使用30*
响应代码(即浏览器正确重定向)。
然而,戴上我的REST帽,是否可以使用40*
和50*
返回更有意义的回复,并且仍然有浏览器重定向?
我还希望在客户端添加一些异步功能,因此这对于确定请求结果特别有用,而不是根据提供的方式验证重定向位置,这就像隧道一样。
答案 0 :(得分:0)
您正在进行标准的HTTP POST / HTML表单提交 - 我不会将其称为REST调用。
HTTP协议有一些预定义的Response Codes。如果您希望任何http客户端(浏览器)遵循重定向,您必须使用标准的http重定向状态代码,即30x状态代码,如302 Found
。