thrift文件定義和生成接口方式

一、簡介
thrfit是跨語言的rpc框架,這裏介紹thrift文件的定義(各種數據類型)和生成接口方式。
二、thrift數據類型和結構
thrift數據類型和結構,官網地址:http://thrift.apache.org/docs/types
1、基本類型
這裏直接引用官網上的定義,很好理解
bool: A boolean value (true or false)
byte: An 8-bit signed integer
i16: A 16-bit signed integer
i32: A 32-bit signed integer
i64: A 64-bit signed integer
double: A 64-bit floating point number
string: A text string encoded using UTF-8 encoding
2、字節類型
binary: a sequence of unencoded bytes
3、集合類型
list: 列表,定義時可直接賦值,如:  list<string> stuNameList=["apple", "pearl"]
set: 集合
map: 映射
4、enum枚舉類型
enum定義枚舉類型,默認從0開始賦值,也可以指定常量值 ,如:

enum level{
    GradeOne,
    GradeTwo=2,
    GradeThree=3
}

5、struct結構體
struct結構體定義實體(如java中的class),
字段格式爲:序號:  類型 名稱
示例如:

struct Stu{
    1: required string stuNo,
    2: optional i32 stuAge,
    3: bool isPass
}

6、service接口
service定義接口(接口可exetend其它接口),包含方法,參數同struct一樣,需要加序號,如:

service Hello{
    Stu buildStu(1:string stuName);
}

7、const常量
const定義常量,如:const i32 step=3;
8、namespace包名
namespace定義包名,放在文件頭,結構爲:namespace 語言  包名
如:
namespace java com.dragon.study.thrift
三、thrift文件完整示例
thrift文件完整示例,如:
 

namespace java com.dragon.study.thrift
//namespace py ThriftTest


//添加其它文件
//include "type.thrift"

const i32 step=3;

const map<string,i32> stuNameAgeMap={"apple":11, "pearl":18}

const list<string> stuNameList=["apple", "pearl"]

const set<string> schoolNameSet=["sun", "moon"]

struct Stu{
    1: required string stuNo,
    2: optional i32 stuAge,
    3: bool isPass
}

enum level{
    GradeOne=1,
    GradeTwo=2,
    GradeThree=3
}

service Hello{
    Stu buildStu(1:string stuName);
}

四、thrift文件生成具體語言接口
thrift文件定義完後,接下來就需要根據文件生成指定語言文件的接口。
1、工具thrift.exe生成
下載生成工具 http://mirror.bit.edu.cn/apache/thrift/0.10.0/thrift-0.10.0.exe
執行命令:thrift --gen <language> <Thrift filename>
如:thrift.exe -gen java ThriftStudy.thrift




















 


















空類型
void










 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章