博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
thrift语法
阅读量:6456 次
发布时间:2019-06-23

本文共 1042 字,大约阅读时间需要 3 分钟。

每个thrift文档都博涵多条header和多条definition

header部分可以引入其他thrift文件(使用include)或定义生成代码的名字空间(使用namespace)

include "shared.thrift"namespace java tutorial

definition

definition部分就是定义和rpc接口的部分

const 定义常量

typedef 为类型创建别名
enum/struct/exception 详见数据类型,struct/exception内部包含多个field
service 定义rpc的接口,其中包含多个function

field

由id,required,类型,名称,默认值组成

1: optional string name='abc',

上面这个例子中1:是id,之后跟的是字段是否required,随后是数据类型,名称和默认值.

其中第二个字段有三种情况optional/required/不填
optional的字段只有在设置值的情况下会被序列化,反序列化时不校验。
required的字段任何情况都会被序列化,在反序列化时如果不是基础元素未设置会报异常TProtocolException: Required field 'XXX' was not present!
默认的情况下序列化时会采用required形式,反序列化时也不会报错
所以当字段没有设值时,optional字段的默认值不会通过网络传输,required和不填的情况会传输,对于struct类型字段,optional和不填不会报错,而required会报错。

service

service定义了服务的接口

//service可以extends来继承service Calculator extends shared.SharedService {    //void返回的方法   void ping(),   //返回int且带异常的方法   i32 calculate(1:i32 logid, 2:Work w) throws (1:InvalidOperation ouch),    //当客户端发送请求后不等待返回结果的异步方法   oneway void zip()}

之后的文章会介绍以上三种调用

转载于:https://www.cnblogs.com/resentment/p/7103201.html

你可能感兴趣的文章
【转载】如何实施异构服务器的负载均衡及过载保护?
查看>>
提交form表单页面不跳转
查看>>
一篇文章教你读懂Makefile
查看>>
文献列表
查看>>
C语言100个算法经典例题(四)
查看>>
iOS开发-基本的网络知识
查看>>
在IIS环境下配置Rewrite规则
查看>>
Plplot中line width 问题
查看>>
js中(function(){…})()立即执行函数写法理解
查看>>
QQ空间Python爬虫(2)---分析json
查看>>
javascript基础
查看>>
查询插入
查看>>
最全的spark基础知识解答
查看>>
NEU OJ 1651 Great number
查看>>
VSCode + PYQT5 + QtDesigner 环境搭建和测试
查看>>
The process could not execute 'sp_MSadd_replcmds'错误解决方案
查看>>
runas /user:administrator cmd 以管理员身份运行CMD
查看>>
配置tomcat允许跨域访问,cors跨域资源共享
查看>>
基本数据结构:链表(list)
查看>>
[LUOGU] P3275 [SCOI2011]糖果
查看>>