Generate Structs Reference
Usage Scenarios
For kitex_gen structs generated by the same IDL, if they are placed in different git repo, the type will be inconsistent. Some business teams will have an independent structs git repo for the public IDL to store these generated codes. The kitex tool can directly generate references to the remote repo for a specific IDL without actually generating a struct in the code generation stage, thereby solving the situation of type inconsistency.
Practice
First make sure:
- The kitex tool version is not lower than v0.4.4
- thriftgo version not lower than v0.3.0
Create a file called idl-ref.yml to configure the remote references you want to use for a particular IDL:
ref:
idl/base.thrift: "github.com/xxxx/public_repo/base"
idl/public/item.thrift: "github.com/xxxx/public_repo/item"
After executing the kitex
command with the additional parameter -thrift code_ref
in a directory with the idl-ref.yml file, the specified IDL will not generate a complete serialization and deserialization code after execution, but will generate a remote reference to the structs, thereby solving the common Library structure conflict problem.
Complete example command.
kitex -module example -service example-server -thrift code_ref idl/base.thrift
An example of the generated codes is as follows:
// Code generated by thriftgo (0.2.4). DO NOT EDIT.
package base
import (
base "github.com/xxxx/public_repo/base"
)
type Base = base.Base
var NewBase = base.NewBase
type BaseResp = base.BaseResp
var NewBaseResp = base.NewBaseResp
const MY_CONST = base.MY_CONST
var MAP_CONST = base.MAP_CONST