核心模型总结
约 967 字大约 3 分钟
2025-04-30
前面三节分别讲解了网关接口、项目接口信息、请求重写规则、请求响应数据构建, 本节将对这三节内容进行总结。
涉及的数据表
表名 | 描述 |
---|---|
gateway_api | 网关接口信息 |
gateway_api_param | 网关接口参数 |
gateway_api_result | 网关接口返回值 |
project | 项目信息表 |
project_api | 项目接口信息 |
project_api_param | 项目接口参数 |
project_api_result | 项目接口返回值 |
request_rewrite | 项目接口请求重写规则 |
response_rewrite | 网关接口响应数据重写规则 |
模型关联关系

额外说明
method_id, content_type_id, scheme_id 这三个字段是通过配置表进行维护的, 属配置类, 未单独列出, 如果不想独立成配置, 将相关字段类型改为varchar, 直接配置在表中即可。
数据结构汇总
// GatewayApiConfig 网关接口请求
type GatewayApiConfig struct {
ID int64 `json:"id" dc:"网关接口ID"`
Uri string `json:"uri" dc:"网关接口路由"`
Method string `json:"method" dc:"请求方法"`
ContentType string `json:"content_type" dc:"请求类型"`
ResponseContentType string `json:"response_content_type" dc:"响应类型"`
Status string `json:"status" dc:"接口状态"`
ParamTable map[int64]*GatewayRequestParam `json:"param_table" dc:"网关接口参数"`
ResultTable map[int64]*GatewayRequestResult `json:"result_table" dc:"网关接口返回值"`
RequestGroup [][]*RequestGroup `json:"request_group" dc:"请求分组"`
ProjectApiTable map[int64]*ProjectApi `json:"project_api_table" dc:"项目接口信息"`
}
// GatewayApiParam 网关接口参数
type GatewayApiParam struct {
ID int64 `json:"id" dc:"参数ID"`
GatewayApiID int64 `json:"gateway_api_id" dc:"网关接口ID"`
Name string `json:"name" dc:"参数名称"`
ParamType string `json:"param_type" dc:"参数类型"`
Location string `json:"location" dc:"参数位置"`
}
// GatewayApiResult 网关接口返回值
type GatewayApiResult struct {
ID int64 `json:"id" dc:"返回值ID"`
GatewayApiID int64 `json:"gateway_api_id" dc:"网关接口ID"`
DataPath string `json:"data_path" dc:"返回值路径"`
DataType string `json:"data_type" dc:"返回值类型"`
Location string `json:"location" dc:"返回值位置"`
}
// RequestGroup 请求分组
type RequestGroup struct {
ID int64 `json:"id" dc:"接口别名ID"`
GatewayApiID int64 `json:"gateway_api_id" dc:"网关接口ID"`
ProjectID int64 `json:"project_id" dc:"项目ID"`
ProjectApiID int64 `json:"project_api_id" dc:"项目接口ID"`
ProjectApiAlias string `json:"project_api_alias" dc:"项目接口别名"`
Sort int `json:"sort" dc:"请求顺序"`
}
// RequestRewrite 请求重写规则
type RequestRewrite struct {
GatewayApiID int64 `json:"gateway_api_id" dc:"网关接口ID"`
SourceProjectApiAliasID int64 `json:"source_project_api_alias_id" dc:"数据源接口别名ID"`
SourceProjectApiResultID int64 `json:"source_project_api_result_id" dc:"数据源接口返回值ID"`
TargetProjectApiAliasID int64 `json:"target_project_api_alias_id" dc:"目标接口别名ID"`
TargetProjectApiParamID int64 `json:"target_project_api_param_id" dc:"目标接口参数ID"`
}
// ResponseRewrite 响应重写规则
type ResponseRewrite struct {
GatewayApiID int64 `json:"gateway_api_id" dc:"网关接口ID"`
SourceProjectApiAliasID int64 `json:"source_project_api_alias_id" dc:"数据源接口别名ID"`
SourceProjectApiResultID int64 `json:"source_project_api_result_id" dc:"数据源接口返回值ID"`
GatewayApiResultID int64 `json:"gateway_api_result_id" dc:"网关接口返回值ID"`
}
// ProjectApi 项目接口数据结构
type ProjectApi struct {
ProjectFlag string `json:"project_flag" dc:"项目标识"`
ProjectID int64 `json:"project_id" dc:"项目ID"`
FullUrl string `json:"full_url" dc:"请求的完整地址"`
ConnectTimeout int `json:"connect_timeout" dc:"连接超时时间"`
ReadTimeout int `json:"read_timeout" dc:"读取超时时间"`
CodeField string `json:"code_field" dc:"业务状态码字段"`
CodeFieldLocation string `json:"code_field_location" dc:"业务状态码位置"`
SuccessCode string `json:"success_code" dc:"成功的状态码"`
MessageField string `json:"message_field" dc:"业务状态码描述字段"`
DataField string `json:"data_data" dc:"业务数据字段"`
ParamList []*ProjectApiParam `json:"param_list" dc:"项目接口参数"`
ResultList []*ProjectApiResult `json:"result_list" dc:"项目接口返回值"`
}
// ProjectApiParam 项目接口参数
type ProjectApiParam struct {
ID int64 `json:"id" dc:"参数ID"`
ProjectID int64 `json:"project_id" dc:"项目ID"`
ProjectApiID int64 `json:"project_api_id" dc:"项目接口ID"`
Name string `json:"name" dc:"参数名称"`
ParamType string `json:"param_type" dc:"参数类型"`
Location string `json:"location" dc:"参数位置"`
}
// ProjectApiResult 网关接口返回值
type ProjectApiResult struct {
ID int64 `json:"id" dc:"返回值ID"`
ProjectID int64 `json:"project_id" dc:"项目ID"`
ProjectApiID int64 `json:"project_api_id" dc:"项目接口ID"`
DataPath string `json:"data_path" dc:"返回值路径"`
DataType string `json:"data_type" dc:"返回值类型"`
DataLocation string `json:"data_location" dc:"返回值位置"`
}