如果API允许永久请求(服务器推送),则是RESTful吗?

时间:2012-04-10 14:36:43

标签: rest websocket comet reverse-ajax

我正在编写一个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吗?如果没有(或是)为什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

首先,始终实施有意义的解决您所面临的问题。符合给定的体系结构样式可以提供特定的好处,但这不应该排除针对给定问题的实用解决方案。

但话说回来,似乎你正在使用资源数据流作为一种“隧道”信息的方式。在客户端和服务器之间。我对此很新,但在我看来,隧道数据与uniform interface约束中的REST architectural style.约束相比,HTTP上的隧道是针对基于SOAP的服务的批评级别之一。