首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >REST :处理网站维护

REST :处理网站维护
EN

Stack Overflow用户
提问于 2017-04-26 20:49:07
回答 2查看 1.8K关注 0票数 0

我有一个UI (angular),作为Spring boot App托管,UI与REST API (Jersey)对话。当整个应用程序或部分应用程序在维护时:

1)我不确定,如何向现在访问的任何人显示维护网页(应该是angular,还是spring boot,单独用于jersey后端,以及如何显示?)

2)对于已经在网站某部分的用户,如何通知他们需要刷新?

3)对于已经在网站某一部分的用户,如果他们没有刷新,当维护结束后,如果他们发送了一个POST请求,其中包含一些旧的无效数据,我如何检查?

注意:该网站没有任何用户身份验证。

作为第三点的示例: UI显示数据库中的记录列表,用户当前正在对其中一条记录进行更改,同时后端转到维护。现在,当后端再次可用时,该用户提交更改后的数据。但是这个数据现在是无效的。我如何识别它,并可能将它告知用户。

EN

回答 2

Stack Overflow用户

发布于 2017-04-26 21:29:28

通过维护,我猜你的意思是你的API使用的一些数据库要么更新了,要么备份了,或者类似的东西。在这种情况下,如果API不能处理命令,我会让它返回一个503 Service Unavailable响应码,并让前端向用户显示一些格式良好的信息。

为了确定客户端是否发送旧数据,您可以使用ETagLast-Modified标头。ETags基本上是当前资源状态的哈希。如果状态发生变化,ETag散列也会发生变化。尝试更新资源的状态的客户端将先前获取的ETag散列连同该资源的新状态一起发送给该API,并且该API然后可以检查是否存在由某个其他客户端应用于该资源的中间改变,并且因此向该客户端返回其不对最新版本起作用的错误。条件请求是在RFC 7232中定义的。

关于你的第二个问题,我不完全确定你想要实现什么。在使用AJAX时,我想说的是迷失的语速。他们到底需要刷新什么?维护过程中是否有资源数据发生变化?如果不是,他们为什么还要关心更新呢?如果需要重置表单输入数据,应用程序接口可能会响应一个205 Reset Content响应代码,但这表明应用程序接口已经完成了请求,并通知客户端重置输入数据。如果应用程序接口由于维护而不能处理请求,我也会返回503 Service Unavailable错误,并让前端通过AJAX向相应的客户端发出信息,如果这是您想要的。

票数 0
EN

Stack Overflow用户

发布于 2017-04-26 21:45:29

1)因为API不能知道任何关于前端的信息,所以我们不应该把逻辑放在那里。此外,如果不通过API进行通信,Angular无法了解任何有关后端的信息。如果使用API或Spring Boot进行维护,会发生什么情况?当这些服务不可用时,Angular不会知道,除非你让它处理收到的响应。

2)在Angular中,您可以对REST API执行超时ping操作。然后在索引中使用一个函数来检查来自API的响应的状态。如果是维护,请重定向至维护页面。这会给你实时连接的感觉,听起来像你想要的,尽管它会增加网络开销,并对你的API造成更大的打击。否则,如果您可以等待用户执行与您的API相关的操作,则可以处理服务关闭时返回的任何http错误代码。

3)你怎么知道它是旧的?这是一个安全问题吗?如果无法从正常传输的数据中区分出来,您可以添加某种时间戳,但这是相当容易规避的。有很多关于时间戳的主题,如果你想这样做的话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43634727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档