Thrift的接口定义语言IDL(thrift用法)

网友投稿 865 2022-10-12


Thrift的接口定义语言IDL(thrift用法)

Thrift的IDL可以使用下面的语法来定义描述接口。

1 基本类型

​​bool​​:布尔值,true 或 false​​byte​​:8 位有符号整数​​i16​​:16 位有符号整数​​i32​​:32 位有符号整数​​i64​​:64 位有符号整数​​double​​:64 位浮点数​​string​​:字符串​​binary​​:二进制数据

2 容器类型

可以包含多个数据(元素)的类型。

​​list​​:元素为type类型的列表,与python的list对应,如

list

​​set​​:元素为type类型且唯一的集合,与python的set对应,如

set

​​map​​:键为type1类型值为type2类型的映射,与python的dict对应,如

map

3 常量类型

​​const 常量类型 常量名称 = 常量值​​,如

const i32 INT32CONSTANT = 9853const map MAPCONSTANT = {'hello':'world', 'goodnight':'moon'}

4 枚举类型

​​enum​​,一组32位整数常量,如

enum Operation { ADD = 1, SUBTRACT = 2, MULTIPLY = 3,}

也可以省略常量值,如

enum Operation { ADD, SUBTRACT, MULTIPLY,}

如果省略了常量值,则枚举中的第一个为1,其次递增。

在Python中以类保存枚举常量值。

5 结构体类型

​​struct​​,封装一组不同类型的数据,与Python中的类对应,如

struct Work { 1: i32 num1 = 0, 2: i32 num2, 3: Operation op, 4: optional string comment,}

optional 关键字表示该字段值可选,如果构建的结构体类型数据中可选字段没有设置值,则在编码生成的消息数据中不会包含可选字段。

6 异常类型

​​exception​​,可以自定义异常中包含的数据内容,与Python中的类对应,如

exception InvalidOperation { 1: i32 whatOp, 2: string why}

7 服务接口

​​service​​,定义服务接口的方法和参数,如

service BasicService { double divide(1:i32 num1, 2:i32 num2) throws (1:InvalidOperation e) oneway void ping()}

说明:

方法可以不带参数,如带参数,须指明参数的序号和参数类型方法名前须指明返回值类型,void表示没有返回值oneway 表示客户端发起请求后不再等待响应返回,oneway方法必须是void返回类型throws 表示可能抛出的异常

8 服务继承

使用​​extends​​可以继承扩展另一个服务,如

include "base.thrift"service Calculate extends base.BasicService { i32 calculate(1:base.Work w) throws (1:base.InvalidOperation e)}

9 其他

Thrfit支持多种注释方法

# 单行注释// 单行注释/* 多行注释 */

使用​​typedef​​可以为类型起别名,如

typedef i32 MyInteger

这里定义了一个新的类型MyInteger,这个MyInteger就是i32类型的别名。

10 编译

使用thrift命令来编译接口定义文件,生成程序代码

thrift --gen 语言 接口定义文件

thrift --gen py basic.thrift

其中py 表示生成Python语言代码,其他的语言参数名可以通过​​thrift -help​​命令查看。

对于有继承服务的接口定义文件,可以添加​​-r​​参数,生成所有相关接口程序,如

thrift -r --gen py calculate.thrift


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Thrift协议与传输选择(thrift协议和http协议)
下一篇:Mybatis insert方法主键回填和自定义操作
相关文章

 发表评论

暂时没有评论,来抢沙发吧~