4

我正在编写一个 REST API,提供对资源的 CRUD 操作。

我希望用户能够注册某些资源更改并通过服务器推送获取更新。对于服务器推送,我将提供对反向 ajax、隐藏 iframe 和 websockets 的支持。为了尽可能地保持 REST,我创建了一个 Streaming 资源来处理注册和与客户端的连接:

流媒体资源:

URI uri : A GET against this URI refreshes the client representation of the resources accessible to this user.
bool WebSocket : Indicate if websocket is available on this server
bool ReverseXHR : Indicate if ReverseXHR is available on this server
bool HiddenIframe : Indicate if HiddenIframe is available on this server
Registration[] Registrations :  The set of registration tasks.

OpenChannel : 打开从网络服务器到客户端的流媒体通道。GET参数类型=(websocket|xhr|hiddeniframe)

CloseChannel : 关闭从网络服务器到客户端的流媒体通道。GET参数类型=(websocket|xhr|hiddeniframe)

调用openchannel?type=websocket将打开 websocket 并开始流式传输注册值的数据。

我已经阅读了很多文章,但我仍然有点困惑。这样做后我还能调用我的 API REST 吗?如果不是(或是),为什么?

谢谢您的帮助!

4

1 回答 1

0

首先,始终实施有意义的方法来解决您面临的问题。遵循给定的架构风格提供了特定的好处,但这不应该排除给定问题的实用解决方案。

但是话虽如此,您似乎正在使用资源数据流作为在客户端和服务器之间来回“传输”信息的一种方式。我对此很陌生,但在我看来,隧道数据违背了REST 架构风格中的统一接口约束。HTTP 隧道是对基于肥皂的服务的批评之一。

于 2012-04-10T17:17:02.250 回答