如何结合 websockets 和 http 来创建一个保持数据最新的 REST API? [关闭]

2024-04-12

我正在考虑使用 websockets 和 http 构建一个 REST API,其中我使用 websockets 告诉客户端新数据可用或直接向客户端提供新数据。

以下是关于它如何工作的一些不同想法:
ws = 网络套接字

想法A:

  1. 大卫让所有用户GET /users
  2. Jacob 添加用户POST /users
  3. 一条 ws 消息被发送到所有客户端,其中包含新用户存在的信息
  4. David 收到 ws 的消息并拨打电话GET /users

Idea B:

  1. 大卫让所有用户GET /users
  2. David 注册以在发生更改时获取 ws 更新/users
  3. Jacob 添加用户POST /users
  4. 新用户由 ws 发送给 David

Idea C:

  1. 大卫让所有用户GET /users
  2. David 注册以在发生更改时获取 ws 更新/users
  3. Jacob 添加用户POST /users它得到 id 4
  4. David 通过 ws 收到新用户的 id 4
  5. David 获得新用户GET /users/4

Idea D:

  1. 大卫让所有用户GET /users
  2. David 注册以在更改完成后获取 ws 更新/users.
  3. Jacob 添加用户POST /users
  4. David 收到一条 ws 消息,表明更改已完成/users
  5. 大卫通过调用仅获得增量GET /users?lastcall='time of step one'

哪种选择是最好的?有哪些优点和缺点?
这是另一个更好的“想法E”吗?
我们是否需要使用 REST 还是它足以处理所有数据?

Edit
为了解决数据不同步的问题,我们可以提供标头
“如果-未修改-自”
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Unmodified-Since https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Unmodified-Since
或“电子标签”
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag
或者两者都带有 PUT 请求。


想法 B 对我来说是最好的,因为客户端专门订阅资源中的更改,并从那一刻起获取增量更新。

我们是否需要使用 REST 还是它足以处理所有数据?

请检查:WebSocket/REST:客户端连接? https://stackoverflow.com/questions/29145970/websocket-rest-client-connections/29149314

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何结合 websockets 和 http 来创建一个保持数据最新的 REST API? [关闭] 的相关文章

  • http://localhost:8080 未重定向到 opensso 登录页面

    我的 Liferay Tomcat 服务器在端口 8080 上运行 当我尝试通过输入 url 从服务器访问应用程序时http localhost 8080 它没有重定向到登录页面 而是给我错误 The Connection to abc x
  • QWebSocketServer - 不释放内存

    首先 我在安全 websocket 服务器应用程序上运行 valgrind 并发现了一个问题 在 Qt Memcheck 中我必须检查 外部错误 看到它 一些字节是肯定输了 指着我的main就在我的地方QCoreApplication ex
  • 为 REST API 编写单元测试的最佳方法是什么?

    在为 API 包装器编写单元测试时 我应该对 REST API 端点进行真正的调用 还是应该使用 mocl 响应来模拟成功和错误的调用 单元测试意味着只测试你的unit API 包装器 仅此而已 因此 不幸的是 您应该模拟整个 API 另一
  • REST API 响应中的校验和

    发送带有响应内容的校验和是个好主意吗 如果是这样 计算校验和的最常见方法是什么 Example HTTP 1 1 200 OK Date Thu 30 Jun 2011 21 32 20 GMT Server Apache Connecti
  • Jersey:返回字符串列表

    我尝试以 JSON 和 XML 形式返回 Jersey 中的字符串列表 我以为这会是微不足道的 我的第一次尝试是写这样的东西 GET Produces MediaType APPLICATION JSON MediaType APPLICA
  • 有没有适用于 IE 的 websocket 插件?

    有没有适用于 IE 的插件 我可以在 IE 7 8 9 中使用 Websockets 我还没找到 socket io 使用的后备方案之一是 flash gimite web socket js https github com gimite
  • Django Rest Framework 完整性错误捕获

    在 Django Rest Framework 中 我使用了序列化器 视图集和路由器方法 每当我在 django Rest 框架的 API 视图中发布故意错误时 它都会抛出完整性错误 有没有办法尝试捕获错误 例如如果数据中没有错误 则继续保
  • 使用 POST 请求向 Jira API 发送 JSON 时出现 System.Net.WebException

    好吧 伙计们 我已经为这个问题苦苦挣扎了一天左右 但没有明确的解决方案 我将从例外开始 The remote server returned an error NotFound at System Net Browser AsyncHelp
  • 如何让 Swagger UI 的参数成为下拉菜单而不是文本输入

    我正在使用 swagger 来显示我的 RESTApi API 的一个参数将字符串作为输入并将其转换为枚举值 有没有办法在 Swagger UI 上显示下拉菜单而不是文本输入字段 以便用户只能选择枚举值中的字符串值 您可以使用以下 swag
  • 泽西岛的全局异常处理

    有没有办法在泽西岛进行全局异常处理 我希望有一种方法可以将其放置在实际调用资源的位置 而不是让单个资源具有 try catch 块 然后调用某种方法来清理所有要发送回客户端的异常 这可能吗 如果是这样 怎么办 而不是 在哪里sanitize
  • WCF 4.0 REST 上传 MS-Excel 文件

    我正在尝试通过 WCF REST 服务上传 MS Excel 文件 我使用了下面帖子中给出的解决方案 RESTful WCF服务图片上传问题 https stackoverflow com questions 664712 restful
  • 使用 Google App Engine 向防火墙后面的设备发起消息

    我想使用 Google App Engine 向位于防火墙 路由器 NAT 后面的设备发起 http 流量 这些设备将接收来自 GAE 的命令 我可以让设备轮询 GAE 来查找新消息 但这会占用大量流量 或者 我可以尝试永久保持打开连接 但
  • 使用 Swagger 的 Spring REST API 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以帮助我生成 RESTful API 文档的工具 我的服务器是用Java编写的并使用S
  • FOSUserBundle & REST Api 调用:如何使用自定义 FormType?

    我在我的 Symfony2 网站上使用 FOSUserBundle 现在我正在开发一个 API 以允许通过 REST API 调用进行注册 我已经覆盖了 FOSUserBundle 的 RegistrationController ApiR
  • 在 PHP 中使用 file_get_contents 进行 PUT 请求的错误请求

    这个 api 调用使用 Postman REST 客户端 可以正常工作 但是当我的 GAE 应用程序中的服务器上发出请求时 我当前收到以下错误 HTTP 请求失败 在 C Projects app file php 第 26 行 打开流失败
  • 如何在 Jersey RESTful Web 服务中放置 cookie?

    我想通过 Jersey API 将 cookie 从 PUT webservice result 放置到 POST webservice 这是我的代码 WebResource service1 client resource http te
  • 不同 servlet-api 版本冲突

    我正在使用 Maven 和 Jetty 作为服务器来开发 RestEasy Web 服务 其中一项服务应使用扩展 javax servlet http HttpServletResponseWrapper 的 Filter 问题出在来自 s
  • 如何将 yii2 Restful api 中两个表的关系数据显示为 json 格式

    我遇到了将两个表中的数据显示为 JSON 格式并在 yii2 Restful api 上工作的问题 这是我的结构数据库 TABLE volunteer volunteer id int 11 NOT NULL auto increment
  • 带有服务总线的 SignalR Azure 云服务

    我使用 SignalR 构建了一个简单的聊天应用程序那里有教程 http www asp net signalr overview getting started tutorial getting started with signalr
  • 有人可以用简单的术语解释“超文本作为应用程序状态的引擎”

    这似乎是我最难理解的 REST 原则 我知道 在设计 REST API 时 大部分精力应该花在为应用程序设计 描述超文本上 对于这个原理的现实世界应用有什么指示吗 原子协议如何应用这个原理 有人可以简单地解释一下如何将其应用到假设的购物车

随机推荐

  • Azure ML PipelineData 与 DataTransferStep 会生成 0 字节文件

    我正在使用 azureml Python SDK 构建 Azure ML 管道 该管道调用PythonScriptStep 该PythonScriptStep将数据存储在AML工作区的workspaceblobstore上 我想扩展管道以将
  • 将 ruby​​ 数组值传递到 C 数组

    我正在尝试为 C 中的 ruby 制作一个独立的 FFT 扩展 基于这个食谱 http www rubyinside com how to create a ruby extension in c in under 5 minutes 10
  • 如何以编程方式设置 ga_trackingId 属性?

    我有一个应用程序 但根据用户的选择 它将在谷歌分析中完全独立地进行监控 所以我需要以编程方式为 EasyTracker 设置 ga trackingId 我试过了EasyTracker getTracker setAppId id 没有运气
  • mysqlimport - 在 MS Windows XAMPP 环境中导入 CSV 文件

    我正在尝试从命令行将 CSV 文件导入 mysql 数据库 这稍后将合并到 Windows 批处理文件中 mysqlimport u user puserpw columns ID CID Alerted fields terminated
  • 我需要在 Swift 中 memset 一个 C 结构体吗?

    AFAIK 在 swift 中 调用类 结构的默认初始化程序会将所有内容初始化为0 nil 在 C 中 例如套接字编程 有时会使用 memset 在使用结构之前将所有内容设置为 0 我是否也需要在 swift 中使用 memset 还是我写
  • 为什么使用erts_debug:size/1时atom的内存为零?

    I use erts debug size 1计算erlang VM中atom的内存 但我发现输出为零 谁能解释一下原因 7 gt erts debug size true 0 原因是原子与原子的数据一起保存在原子表中 因此整个节点中只有一
  • 如何从Python中的给定文本创建一组类及其变量和方法

    我想从给定的文本配置创建一组类 其变量和方法 特别是使用 django 模型 例如 我有一个要在 models py 中创建的模型列表 classes users posts commnets vars a b bb vv aa metho
  • Spring MVC 静态资源位于单独的 jar 中

    最近 我的同事问我是否可以将静态资源 css 图像 js 放在单独的 jar 文件中 并从 spring mvc 应用程序访问这些静态资源 我在谷歌上搜索 但没有发现任何有趣的东西 所以我的问题是 可能吗 如果是的话 您能解释一下该由谁来做
  • 复杂的 php mysqli 查询插入数据(如果不存在):获取重复列名“?”

    所以 伙计们 请查看我的示例代码 并帮助我 我找不到解决方案 在我传递 等参数的行上不断出现重复的列名称 我在查询中一起传递了 7 个变量 知道可能是什么问题吗 SQL INSERT INTO wifi ssid password name
  • 键入时更新文本框

    在 Access 中 我有一个包含三个文本框的表单 我正在尝试更新一个名为的文本框tbx组合名称两者的组合 textbox tbx姓氏 人的姓氏 textbox tbx名字 人的名字 我的问题是 我使用什么文本框属性 以便在输入文本时tbx
  • 检查开关参数的正确方法是什么

    检查开关值的正确方法是什么 function testSwitch Param switch swth Write Host Value of swth is swth if swth IsPresent Write host Switch
  • 从证书 x509 中提取公钥

    我正在寻找一种从 JavaScript 中的证书 x509 PEM 格式 中提取公钥的方法 如下所示 openssl x509 in cert cer pubkey noout gt pub txt 您需要能够解析 ASN 1 结构的东西
  • decltype中的成员函数调用

    以下代码 struct A int f int auto g int x gt decltype f x 无法编译并出现错误 error cannot call member function int B f int without obj
  • 如何在手机SD卡或其他位置搜索文件

    我想搜索用户移动设备上具有特定扩展名的文件 我尝试搜索但找不到任何直接的 API 是否有特定的 API 或者是否有实现相同目的的繁琐方法 或者是否有一种机制可以调用 linux 调用 find 或类似的东西 Thanks boolean i
  • 使用 Flask 代理到另一个 Web 服务

    我想将对 Flask 应用程序发出的请求代理到计算机上本地运行的另一个 Web 服务 我宁愿使用 Flask 而不是更高级别的 nginx 实例 这样我们就可以重用应用程序中内置的现有身份验证系统 我们越能保持这种 单点登录 越好 是否有现
  • 我可以改变传递给 setState 函数的状态吗?

    我知道我不应该直接在 React 中改变状态 但是当我使用函数时情况如何 onSocialClick e gt const id e target value this setState prevState props gt prevSta
  • 以编程方式在 WooCommerce 中创建多个优惠券

    我一直在寻找一种向 WooCommerce 批量添加优惠券的方法 它实际上是一个包含 800 个会员号码的列表 可以提供折扣 而优惠券似乎是实现此目的的最佳方式 我找到了一种以编程方式添加单张优惠券的方法 http docs woothem
  • Pycharm的终端不会更改Project Interpreter处Python版本对应的Python版本

    我已经安装了 PyCharm 2016 3 并在 Windows 上安装了两个版本的 Python 3 5 2 和 2 7 9 我想使用这两个版本 因此我在 项目解释器 窗口中对其进行了配置 我选择的是3 5 2版本如下图 之后我打开Pyt
  • 在 Meteor 应用程序中使用 Disqus / reCaptcha

    我正在开发一个使用 Meteor 的应用程序 我正在尝试在我的其中一个表单上使用 reCaptcha 并在我的某些页面上使用 Disqus 评论系统 但问题是 当我运行流星服务器时 这些都没有被渲染 以下是我添加到模板中的示例 Disqus
  • 如何结合 websockets 和 http 来创建一个保持数据最新的 REST API? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在考虑使用 websockets 和 http 构建一个 REST API 其中我使用 websockets 告诉客户端新数据可用或直接向客