是否可以重写websockets?

我计划开发一个基于Web的聊天应用程序,它接收ReSTful请求,将它们转换为XMPP并将它们交付给XMPP服务器。

这种基于聊天的应用程序使用websockets看起来很有希望,因为事件(或响应)可以异步传递。 但是如果我使用websocket作为从浏览器传输请求的底层协议,那么这仍然可以被认为是ReSTful设计吗? 如果是,那么URIs,动词(GET,POST ...),websocket消息中表示的参数如何? 用xml / json包装它们并发送它?

另外,ReSTful体系结构指出没有会话状态将被存储在服务器上。 但是在这种情况下,当创建XMPP客户端会话时,此会话的状态将存储在服务器上(违反无状态约束)


为什么要在套接字之上构建一个REST API? 恕我直言,REST API的好处是利用标准HTTP协议的可能性,如无状态请求,语义动词(如GET,DELETE)来构建API,以便(客户)开发人员轻松理解。 由于套接字不提供HTTP动词等等,你会为套接字建立一些HTTP层,这是恕我直言,不合理。

如果你真的建立这样的事情,我建议使用HTTP协议作为蓝图并实现像HTTP这样的套接字协议。


REST是一种不强加协议的架构风格。 所以是的,如果你喜欢,你可以使用Web Sockets,使用HTTP的REST和使用FTP的REST来完成REST。

使用HTTP的主要原因是通过HTTP与任何组件或编程语言进行通信非常简单且相当简单,同时也因为HTTP支持具有多个中介的分布式环境:代理,防火墙......; 因此,您可以在任何拓扑上部署您的服务,任何人都可以访问它。

我的咆哮:如果你是一个RESTliban,而且Roy Fielding的论文是真理的源泉,那么动词就永远不会被认为是语义的一部分。 URI是语义。 不同动作对不同动作的使用一直是REST over HTTP的优雅发展,但不是“真相”的一部分。 您可以检查Roy在他的博士论文第六章中评估的HTTP休息情况。 没有提到动词。 并注意它是一种评估方案,而不是规范。

TLDR;

如果您需要通过互联网进行实时双向通信,并且客户端是网络浏览器,则最佳选择是Web套接字。 然后,您可以在Web套接字上实现一个应用程序级协议,以实现RESTful Web服务。


是。 您可以使用REST over WebSocket和SwaggerSocket之类的库。

链接地址: http://www.djcxy.com/p/7051.html

上一篇: Is ReST over websockets possible?

下一篇: How to manage state in REST