为非 RESTful 传输设计线协议¶
https://blueprints.launchpad.net/zaqar/+spec/non-rest-wire-protocol
此规范代表为设计一个线协议需要完成的工作,该协议将尊重当前的 API v1.1,并且对非 RESTful 传输协议也很有用。
问题描述¶
我们目前有一个定义良好的协议,该协议在 HTTP 上运行良好。作为一个项目,我们期待欢迎更多适用于不同用例的传输,但我们没有支持它们的方法。此蓝图旨在定义这样的协议以及使其成为现实所需的工作。
提议的变更¶
基于此 wiki 页面[0]中定义的现有协议以及此处提出的粗略规范[1],我建议使用类似于以下内容的协议,并完成 api-layer 蓝图[2] 中启动的工作。
然而,此蓝图并不建议一个所有传输都应使用的 API 层。相反,它建议一个将由依赖于较低级别传输协议(如:websocket、原始 TCP 等)的传输使用的 API 层。
理想情况下,人们期望 Zaqar 支持现有的协议,如 STOMP、AMQP 等。虽然这可能或不可能取决于协议,但我们应该有一个坚持服务目标的协议,即简单、直接和轻量级。其他协议可以在未来作为单独的传输实现。
{
"action": "post_message",
"header": {
"User-Agent": "python/2.7 killer-rabbit/1.2",
"Date": "Wed, 2 8 Nov 2012 21:14:19 GMT",
"Accept": "application/x-msgpack",
"Client-ID": 30387f00-39a0-11e2-be4d-a8d15f34bae2,
"X-Project-ID": 518b51ea133c4facadae42c328d6b77b,
"X-Auth-Token": "7d2f63fd-4dcc-4752-8e9b-1d08f989cc00"
},
"body": {
...
}
}
[0] https://wiki.openstack.org/wiki/Zaqar/specs/api/v1.1 [1] https://wiki.openstack.org/wiki/Zaqar/specs/zmq/api/v1 [2] https://blueprints.launchpad.net/zaqar/+spec/cross-transport-api-spec
备选方案¶
什么都不做,让每个传输实现自己的协议。
在不同的协议之上实现传输
实现¶
负责人¶
- 主要负责人
flaper87
里程碑¶
- 完成目标里程碑
Kilo-1
工作项¶
定义线协议
创建一个处理消息的 API 管理器
依赖项¶
无
注意
本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode