我正在编写一个 RESTfull api,例如用户可以在一个线程中创建新线程或新帖子。这是我将使用普通 POST 请求的地方。我的 API 还允许用户相互发送消息。当用户收到我想要在浏览器中收到通知的消息时,我会在这里使用 websockets 而不是每隔几秒轮询一次。
我的问题是
我在开发 RESTfull API 方面非常陌生,而且我才开始使用 websockets 进行开发。对于任何对您来说似乎合乎逻辑的愚蠢问题,我深表歉意:)
谢谢
最佳答案
Since I already have open connection with websocket where messages will come, should I also use this connection to send messages, create new threads or posts?
这取决于。如果您使用的是 CQRS 方法并且您的写入由与读取不同的盒子处理,则您希望使用常规的 HTTP POST;或者如果您必须为可能不支持 WebSockets 的外部调用者提供兼容性。
Can I use POST request for creating messages and websockets to receive them in realtime and GET request to get history of messages? Is this good practice?
听起来很合理。您将获得 REST 兼容性和 WebSocket 作为增强功能。我所做的是使用 WebSockets 来增强 REST API。一些操作包含在两个部分,例如“自动完成”本质上是快速连续的调用并且属于读取模型可以通过两种方式完成,但是缺点是我无法利用内置输出缓存,我必须为他们实现我自己的缓存。
I'm using django rest framework, which handles validation of fields for me, how would I handle validation if I create resource using websocket instead of normal POST request.
我不做 django,但我想您可以以某种方式自己 Hook 该验证,并在反序列化后在您的消息对象中调用它。
关于django - 混合 Websocket 和 REST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42017878/