Restful API的客户端如何在POST时处理http状态301重定向?

时间:2015-10-21 17:17:44

标签: rest http error-handling

问题

精心设计的应用程序如何处理301"永久移动"在http POST重定向到restful api?

上下文

  • 我们的托管应用程序提供了一个安静的api
  • 我们有广泛的客户,他们在自己的内部部署中使用我们的休息api'应用程序[fwiw,安装在几十个站点 - 没有简单的更新方式]
  • 我们正在将我们的应用程序迁移到新的数据中心,在此过程中,我们将从纯文本http'中切换它们(和其他人)。到#ssl-encrypted https'。 [物理位置数据中心当然无关紧要,但新数据中心有更严格的安全规则,因此要求https]

  • 我们的前端(haproxy / nginx)将发送301'永久移动'

  • 此301重定向会保留查询参数,但会丢失帖子数据

我知道"宁静的api应该是永久性的#34;但是, merde到达(那个狗屎发生法国) - 帝国崩溃,柏林墙坍塌,甲骨文收购太阳等。

问题

他们的应用程序对我们的resti api进行HTTP post调用。当前端返回http状态301'时,他们的应用程序不会重新发布'到新的URL,更新失败。

问题

  • 错误处理如何处理301以及其他http状态? (伪代码就足够了)
  • 我们的前端应该是'为' 301'?
  • 做些不同的事情

1 个答案:

答案 0 :(得分:4)

完成您的设计精心设计"在纯粹的RESTfulness"意义上的要求,客户端应该将请求重新发送到新的URI。响应代码301表示资源已移动,无法用于完成请求,因此确实没有后备位置。

如果客户端尝试重新发布,但丢失数据,那就是客户端错误。 "正确"客户端的行为因您的要求而异:它可以将重定向视为可恢复的错误情况,并透明地重新发布;它可以在指示用户更新端点时重新发布;或者它可能会失败并显示相应的错误消息。