zoukankan      html  css  js  c++  java
  • thrift语法

    每个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()
    }
    

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

  • 相关阅读:
    MyBatis 3源码分析
    Java动态代理
    HashMap原理分析(JDK1.7.x之前)
    JQuery datepicker 用法
    百度一键分享功能
    JQuery BlockUI插件
    AJAX参数详解
    ECharts图标库
    KeCode对照表(键盘按键的获取)
    常见浏览器兼容问题
  • 原文地址:https://www.cnblogs.com/resentment/p/7103201.html
Copyright © 2011-2022 走看看