- Published on
Protobuf 基本使用
- Authors
- Name
- Shelton Ma
1. 介绍
Protobuf(Protocol Buffers),是 Google 开发的一种跨语言、跨平台的可扩展机制,用于序列化结构化数据。 与 XML 和 JSON 格式相比,protobuf 更小、更快、更便捷。protobuf 目前支持 C++、Java、Python、Objective-C,如果使用 proto3,还支持 C#、Ruby、Go、PHP、JavaScript 等语言。
- GitHub 地址:protobuf
- 优点:
- 性能好, 序列化和反序列化快, 占用空间小
- 跨语言
- 缺点:
- 二进制格式可读性差:为了提高性能,protobuf 采用了二进制格式进行编码,这直接导致了可读性差。
- 缺乏自描述: XML 是自描述的,而 protobuf 不是,不配合定义的结构体是看不出来什么作用的。
2. 使用
demo 参考: mercari jp
常用命令:
# 生成python模版 protoc --python_out=. mercari_search_request.proto
在推测proto文件时, 可以尝试修改请求headers的
"accept": "application/protobuf",
修改为"accept": "application/json",
, 如果能正常返回json格式的数据, 可以直接使用, 也可以转换, 避免后续服务器禁用json格式的响应
Preview protobuf request by charles
Charles supports preview protobuf default, however somehow, some responses are not correctly recognized as protobuf, so parsing mode needs to be manually specified. right click on your request, View Response As, Protocol Buffers