我正在为网络设备制作一个管理系统(我们称这个系统为a)的rest接口,一切正常。a从另一个后端系统(我们称之为系统b)获取设备信息并将其索引到数据库中,然后每当客户机通过rest接口请求信息时,它将其作为json返回。
但是,有时客户需要通过向B请求来强制刷新某些设备信息(除了请求A刷新之外,客户不参与)。刷新单个节点的信息需要几秒钟的时间,因此该信息可能不应在请求它的同一请求中返回。目前,我们已经将此建模为使用POST /jobs和一些数据创建“刷新信息”类型的作业。但这感觉太过复杂了,我们更希望像POST /equipment/<id>/refresh这样的东西,但这感觉违背了“休息方式”?
除了上述乔布斯提到的解决方案,还有其他解决方案,但仍然遵循“休息方式”吗?

最佳答案

我将使用GET /equipment/<id>?since=<timestamp>,其中since参数是可选的。从语义上来说,这意味着:
从最后一次刷新设备时起(当未给出id时),获取具有给定timestamp的设备,或
使给定id的设备在不早于给定timestamp的情况下刷新
系统中的每个equipment都有一个last_refreshed时间戳。如果GET,带有since=<timestamp>参数的last_refreshed < since将刷新设备,然后返回equipment
你的服务用户可以说GET /equipment/123?since=<15 minutes ago>并确保他们总是得到不超过15分钟的信息。GET /equipment/123?since=<now>表示“强制刷新”。

关于api - REST中的 Action 建模,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15815546/

10-10 16:52