【发布时间】:2016-01-30 05:00:51
【问题描述】:
我正在考虑使用 websockets 和 http 构建一个 REST API,我使用 websockets 告诉客户端新数据可用或直接向客户端提供新数据。
以下是关于它如何工作的一些不同想法:
ws = websocket
想法一:
- David 使用
GET /users获取所有用户 - Jacob 添加一个用户
POST /users - 向所有客户端发送一条 ws 消息,其中包含新用户存在的信息
- David 收到 ws 的消息并致电
GET /users
想法 B:
- David 使用
GET /users获取所有用户 - 当
/users发生更改时,David 注册以获取 ws 更新 - Jacob 添加一个用户
POST /users - 新用户由ws发送给David
想法 C:
- David 使用
GET /users获取所有用户 - 当对
/users进行更改时,David 注册以获取 ws 更新 - Jacob 用
POST /users添加一个用户,它的 id 为 4 - David 通过 ws 接收到新用户的 id 4
- David 通过
GET /users/4获取新用户
想法 D:
- David 使用
GET /users获取所有用户 - David 注册以在对
/users进行更改时获取 ws 更新。 - Jacob 添加一个用户
POST /users - David 收到一条 ws 消息,指出对
/users的更改已完成 - David 通过调用
GET /users?lastcall='time of step one'仅获取增量
哪种选择是最好的,优缺点是什么?
它是另一个更好的“创意 E”吗?
我们是否甚至需要使用 REST 或者 ws 是否足以处理所有数据?
编辑
为了解决数据不同步的问题,我们可以提供标题
“If-Unmodified-Since”
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Unmodified-Since
或“E-Tag”
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag
或两者带有 PUT 请求。
【问题讨论】:
-
@Robocide,你能再解释一下你的赏金吗?我不确定你的意思。
标签: rest websocket jax-rs restful-architecture