小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
简介
Thrift 通过 IDL(Interface Definition Language)定义通用的服务接口,通过 Thrift 提供的编译器,将 IDL 编译为不同语言的代码,通过这个方式实现跨语言的功能。
我写的这个系列的文章,参考了两篇比较好的文章,从实践的角度看下 Thrift IDL 的编写,本文将会介绍容器的概念和使用
文章系列
- thrift IDL 基本类型和实践(一) struct 结构体、文件引用 和 基本类型
- thrift IDL 基本类型和实践(二)Container (容器)
- thrift IDL 基本类型和实践(三)enum、const、typedef、exception
- thrift IDL 基本类型和实践(四)service(服务)、namespace、保留关键字
Container (容器)
有三种可用的容器类型:
list<t>:元素类型为t的有序列表,允许重复。类似于java中的ArrayList,类似js中的Array。set<t>:元素类型为t的无序表,不允许重复。类似于java中的HashSet,类似js中的Set。map<t, t>:键类型为t,值类型为t的键值对,键不允许重复。类似于java中的HashMap,类似js中的Map。
我们常用的接口返回值会是 list 类型,比如需要返回一个这样的列表
[
{
id: 1,
name: 'demo1'
},
{
id: 2,
name: 'demo2'
}
]
对应的 IDL 就可以这样定义
struct ExamplePackage {
1: required int32 id;
2: required string name
}
struct ExampleResponse {
1:required string message;
2:optional list<ExamplePackage> data;
}
set 和 map 在实践中还没有大量的使用到,后续使用后再补充上~