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

1 基本类型

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

2 容器类型

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

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

    list<double>
    
  • set<type>:元素为type类型且唯一的集合,与python的set对应,如

    set<i32>
    
  • map<type1,type2>:键为type1类型值为type2类型的映射,与python的dict对应,如

    map<string,string>
    

3 常量类型

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

const i32 INT32CONSTANT = 9853
const map<string,string> 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

Thrift的接口定义语言IDL相关推荐

  1. 接口定义语言IDL,COM

    接口定义语言MIDL:Microsoft Interface Definition Language. MIDL是定义COM接口的说明性语言.是一种独立于语言的接口定义方式,从而产生RPC(Remot ...

  2. 【C 语言】字符串模型 ( strstr-while 模型 | 抽象函数模型 | 业务子函数接口定义要点 | 形参指针间接赋值 | 返回值状态 | 形参指针处理 | 形参指针判空 | 形参返回值 )

    文章目录 前言 一.业务子函数接口定义要点 二.完整代码示例 前言 字符串开发模型 : strstr-while/do-while 模型 : 在 字符串 中 查找 子串特征 ; 两头堵模型 : 两个指 ...

  3. ​C语言指针:输出月份英文名 (15 分)本题要求实现函数,可以返回一个给定月份的英文名称。函数接口定义:char *getmonth( int n );

    6-1 输出月份英文名 (15 分) 本题要求实现函数,可以返回一个给定月份的英文名称. 函数接口定义: char *getmonth( int n ); 函数getmonth应返回存储了n对应的月份 ...

  4. Apache Thrift - 可伸缩的跨语言服务开发框架

    简介: Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的远程服务调用的框架.本文将从 Java 开发人员角度详细介绍 Apache Thrift 的架构.开发和部 ...

  5. 我的编码习惯 —— API 接口定义

    工作中,少不了要定义各种接口,系统集成要定义接口,前后台掉调用也要定义接口.接口定义一定程度上能反应程序员的编程功底.列举一下工作中我发现大家容易出现的问题: 1. 返回格式不统一 同一个接口,有时候 ...

  6. 流程定义语言(BPMN)

    流程定义语言(BPMN) 1.什么是BPMN 业务流程建模与标注(Business Process Model and Notation,BPMN) ,描述流程的基本符号,包括这些图元如何组合成一个业 ...

  7. 火龙果(redpitaya)开发板常用接口C语言开发指南(九)——产生信号脉冲(持续更新中)

    火龙果(redpitaya)开发板常用接口C语言开发指南(九)--产生信号脉冲(持续更新中) --本人为<火龙果实战指南--搭建基于Zynq处理器的测量仪器与创新实践平台>一书的作者之一, ...

  8. 初学TypeScript之接口定义

    TypeScript入门(2) 前面讲了如何使用TypeScript和TypeScript的数据类型有哪些,这一章就讲解TypeScript的接口. 如果不知道如何写TypeScript的朋友或者不知 ...

  9. 编译型和解释型、动态语言和静态语言、强类型定义语言和弱类型定义语言

    一.编译型与解释型语言 我们编写程序也就是源代码基本是用高级编程语言,比如JavaScript, java, c等等,这些语言计算机是不理解的,所以需要转化(翻译)成计算机理解的机器语言,或者说目标C ...

最新文章

  1. logo自动旋转 html,HTML/CSS3 Logo选择器
  2. Spring LDAP
  3. java heroku_Heroku和Java –从新手到初学者,第1部分
  4. java 8 删选集合 和取集合中的字段重组成集合的使用
  5. 鸿蒙系统正式开源,余承东:鸿蒙系统正式开源,友商也可以使用!
  6. 大数据之-入门_大数据部门组织结构(重点)---大数据之hadoop工作笔记0007
  7. 分布式日志平台--ELKStack实践
  8. java删除相对路径文件夹_Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录...
  9. [leetcode]Flatten Binary Tree to Linked List
  10. 读《scikiit-learn机器学习》逻辑回归算法
  11. Vue:默认的App.vue
  12. 《嵌入式-STM32开发指南》第三部分 外设篇 - 第5章 光敏传感器
  13. python调用adb shell命令_Python3 执行 adb shell 命令详解
  14. 分布式操作系统 - 1.分布式系统概论
  15. 360无线wifi路由器连接到服务器,把360无线路由器设置为二级路由器 | 192路由网...
  16. html静态网站中华传统文化网站主题设计 传统文化艺术耍牙15页
  17. 用python来编写TSP问题
  18. 使用jasypt加密解密
  19. 高级测试工程师当初是如何突破瓶颈的?——自来大厂测试总监的感言
  20. [ahk]通达信股票交易软件持仓数据获取(招商证券、中银国际、通达信官方版等测试可用)

热门文章

  1. linux vi编辑器中的复制粘贴快捷键
  2. 2022-2028年中国能源期货市场深度调研及投资前景预测报告
  3. Go 知识点(19)— Go 语言中的野指针
  4. 最全Pycharm教程(43)——Pycharm扩展功能之UML类图使用 代码结构
  5. CUDA 7流简化并发
  6. RGB Color Codes Chart
  7. YOLOv4 资源环境配置和测试样例效果
  8. 协程Coroutines入门
  9. 2021年大数据常用语言Scala(一):Scala简介
  10. idea中设置指向源代码Scala