前言:在一个 .thrift 文件内定义服务,并用 thrift 工具生成服务接口。
1..thrift文件
2.thrift工具
1..thrift文件
.thrift文件语法-官方文档
接口文件是rpc开发的第一步,通过定义服务来约束服务端、客户端开发人员,不致于跑偏。(类似于我们的api文档)
# 命名空间,可以不写也可以写多个,按照使用服务端、客户端语言来写即可
namespace go thrift.user
namespace php thrift.user
# 定义一个用户结构
struct UserInfo {
#序号:字段类型 字段名
1:i64 id
2:string username
3:string password
4:string email
}
# 定义一个用户服务
service User{
# 定义一个GetUser方法(接收一个用户id,返回上面定义的用户信息)
UserInfo GetUser(1:i32 id)
# 定义一个GetName方法(接收一个用户id,返回用户名称)
string GetName(1:i32 id)
# 方法定义格式:
# 返回的类型 方法名(序号:参数类型 参数名 ... )
# bool Test(1:i32 id, 2:string name, 3:i32 age ... )
}
2.thrift工具
由于我们的编程语言代码是无法识别.thrift文件定义的接口的,所以需要工具帮助我们将.thrift文件翻译成对应语言接口代码。
thrift官方的thrift工具正好做这些事,这也为rpc框架跨语言打下基础。(相当于翻译官)
# 1.安装thrift工具。
# 我这里是Mac系统,采用 homebrew安装(这里为0.11.0版本)
➜ ~ brew install thrift
# 检测thrift是否安装成功
➜ ~ thrift -version
Thrift version 0.11.0
thrift可以帮助我们根据.thrift文件生产不同语言服务接口,就像下面这样:
thrift -out . --gen go user.thrift
- -out . 指定输出目录为当前目录
- --gen go user.thrift 指定使用go生成器,根据user.thrift文件,生成go语言代码(如下图)
总结
.thrift文件是rpc开发的第一步,第二步按照服务接口实现服务端。
.thrift文件语法 [http://thrift.apache.org/docs/types]