rest - 在一个 http 休息请求中发送两个二进制消息
问题描述
我在使用 Python 烧瓶的服务器上运行 REST 服务。我有使用 java 构建的 REST 客户端。我需要在单个 Http REST 请求中发送两条二进制消息。这是两个原因,因为它们都是不同的 protobuff 消息类型,但彼此相互关联,应该进入单个 HTTP 请求。我们如何在发送和接收端实现这一点。
解决方案
这里最简单的选择可能是简单地声明一个包装消息类型:
message FooRequest {
// remove "required" if using proto3 syntax
required Request1MessageType part1 = 1;
required Request2MessageType part2 = 2;
}
并发送由两个内部消息FooRequest
组成的单个消息。然而,这并不总是可行的,在这种情况下,您必须在二进制有效负载中实现自己的框架机制。一个简单但实用的选项可能是测量第一条消息的大小(以字节为单位) - 即len
,然后发送:
[len, 4 bytes little endian][message 1, len bytes][message 2]
并在另一端再次解码 - 即取前 4 个字节并使用它来计算两个内部消息的范围。考虑到将来需要更多消息,对每条消息都包含一个长度前缀可能是有意义的(即,还包括消息 2 的长度前缀)——但严格来说,在当前情况下这将是多余的。
推荐阅读
- javascript - 如何解决我的 wordpress 网站上找不到页面的问题
- flutter - 我在使用 vscode 运行颤振应用程序时遇到 gradle 问题
- postgresql - Perl CPAN 模块安装失败:Windows7 64 位草莓 Perl 5.26.1、PostgreSQL 12 上的 DBD::Pg(PostgreSQL 驱动程序)
- github - 如何设置 dart.yml 以使用 build_runner 运行测试
- java - 线程“main”中的异常:未解决的编译问题*m
- python - 在 python 中使用 pandas 格式化列
- javascript - 如何在 vanilla JavaScript 中获取动态输入的值?
- r - R:使用 data.table 访问列表列中的元素
- python - 具有不同虹膜模型K值的KNN模型的统计指标?
- php - 为什么我的输入表单不向我的 SQL 数据库发送数据?