优化requestContext数据结构定义
This commit is contained in:
parent
45d4b08ed3
commit
376976b8af
@ -23,34 +23,50 @@ import (
|
|||||||
type RequestContext struct {
|
type RequestContext struct {
|
||||||
ctx context.Context `json:"-"` // gin 上下文
|
ctx context.Context `json:"-"` // gin 上下文
|
||||||
runtimeInstance *trace.Runtime `json:"-"` // 链路统一追踪实例
|
runtimeInstance *trace.Runtime `json:"-"` // 链路统一追踪实例
|
||||||
|
lock *sync.RWMutex `json:"-"` // 数据锁
|
||||||
GatewayUrlConfig *GatewayApiConfig `json:"gateway_url_config"` // 网关接口的配置
|
GatewayUrlConfig *GatewayApiConfig `json:"gateway_url_config"` // 网关接口的配置
|
||||||
GatewayApiInfo *GatewayApi `json:"gateway_api_info"` // 网关接口信息
|
GatewayApiInfo *GatewayApi `json:"gateway_api_info"` // 网关接口信息
|
||||||
GatewayRequest *GatewayRequestInfo `json:"gateway_request"` // 网关请求信息
|
GatewayRequest *GatewayRequestInfo `json:"gateway_request"` // 网关请求信息
|
||||||
BackendApiResultTable map[string]*httpclientDefine.Response `json:"backend_api_result_table"` // 后端接口返回数据详细信息: 接口别名 => 请求结果
|
BackendApiResultTable map[string]*httpclientDefine.Response `json:"backend_api_result_table"` // 后端接口返回数据详细信息: 接口别名 => 请求结果
|
||||||
AppCode string `json:"app_code"` // 传入的APP Code
|
|
||||||
Sign string `json:"sign"` // 网关接口的签名
|
|
||||||
AppApiPermission *AppApiPermission `json:"app_api_permission"` // 应用接口权限
|
AppApiPermission *AppApiPermission `json:"app_api_permission"` // 应用接口权限
|
||||||
AppApiResultPermissionList []*AppApiResultPermission `json:"app_api_result_permission_list"` // 应用接口返回值权限
|
AppApiResultPermissionList []*AppApiResultPermission `json:"app_api_result_permission_list"` // 应用接口返回值权限
|
||||||
Lock *sync.RWMutex `json:"-"` // 数据锁
|
|
||||||
AppRateBehavior RateBehavior `json:"app_rate_behavior"` // 应用没有配置流控限制的行为
|
AppRateBehavior RateBehavior `json:"app_rate_behavior"` // 应用没有配置流控限制的行为
|
||||||
ProjectRateLimit map[string]*RateLimitConfig `json:"project_rate_behavior"` // 项目流控行为
|
ProjectRateLimit map[string]*RateLimitConfig `json:"project_rate_behavior"` // 项目流控行为
|
||||||
ResponseData *ResponseData `json:"response_data"` // 网关响应数据
|
ResponseData *ResponseData `json:"response_data"` // 网关响应数据
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (rc *RequestContext) Lock() {
|
||||||
|
rc.lock.Lock()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rc *RequestContext) Unlock() {
|
||||||
|
rc.lock.Unlock()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rc *RequestContext) RLock() {
|
||||||
|
rc.lock.RLock()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rc *RequestContext) RUnlock() {
|
||||||
|
rc.lock.RUnlock()
|
||||||
|
}
|
||||||
|
|
||||||
|
// GatewayApiConfig 网关接口配置
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 10:41 2024/11/13
|
||||||
type GatewayApiConfig struct {
|
type GatewayApiConfig struct {
|
||||||
RateLimit *RateLimit `json:"rate_limit"` // 网关接口流控规则
|
RateLimit *RateLimit `json:"rate_limit"` // 网关接口流控规则
|
||||||
GatewayApiID int64 `json:"gateway_api_id"` // 网关接口ID
|
Uri string `json:"uri"` // 网关接口ID
|
||||||
Uri string `json:"uri"` // 网关接口ID
|
ContentType string `json:"content_type"` // 请求类型
|
||||||
ContentType string `json:"content_type"` // 请求类型
|
Method string `json:"method"` // 请求方法
|
||||||
Method string `json:"method"` // 请求方法
|
Version string `json:"version"` // 接口版本
|
||||||
Version string `json:"version"` // 接口版本
|
ParamList []*Param `json:"param_list"` // 参数列表
|
||||||
Name string `json:"name"` // 接口名称
|
ResultList []*Result `json:"result_list"` // 返回值列表
|
||||||
Status string `json:"status"` // 状态
|
ServiceApiTable map[string]*ServiceApiConfig `json:"service_api_table"` // 服务接口列表
|
||||||
ParamList []*GatewayApiDetailParamItem `json:"param_list"` // 参数列表
|
RequestGroup [][]*RequestGroupItem `json:"request_group"` // 请求分组
|
||||||
ResultList []*GatewayApiDetailResultItem `json:"result_list"` // 返回值列表
|
RequestRewriteTable map[string][]*RequestRewriteItem `json:"request_rewrite_table"` // 请求重写规则, 项目接口别名ID => 重写规则列表
|
||||||
ProjectApiTable map[int64]*GatewayApiDetailProjectApiItem `json:"project_api_table"` // 项目接口列表
|
|
||||||
RequestGroup [][]*GatewayApiDetailRequestGroupItem `json:"request_group"` // 请求分组
|
|
||||||
RequestRewriteTable map[string][]*GatewayApiDetailRequestRewriteItem `json:"request_rewrite_table"` // 请求重写规则, 项目接口别名ID => 重写规则列表
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type RateLimit struct {
|
type RateLimit struct {
|
||||||
@ -84,42 +100,38 @@ type GatewayApiDetailProjectApiResultItem struct {
|
|||||||
ResultType string `json:"result_type"` // 返回值类型
|
ResultType string `json:"result_type"` // 返回值类型
|
||||||
}
|
}
|
||||||
|
|
||||||
// GatewayApiDetailRequestGroupItem ...
|
// RequestGroupItem 请求接口配置
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 17:58 2024/5/13
|
// Date : 11:10 2024/11/13
|
||||||
type GatewayApiDetailRequestGroupItem struct {
|
type RequestGroupItem struct {
|
||||||
ProjectID int64 `json:"project_id"` // 项目ID
|
ServiceFlag string `json:"service_flag"` // 服务标识
|
||||||
ProjectFlag string `json:"project_flag"` // 项目标识
|
ServiceApiFlag string `json:"service_api_flag"` // 服务接口标识
|
||||||
ProjectApiID int64 `json:"project_api_id"` // 项目接口ID
|
ServiceApiAlias string `json:"service_api_alias"` // 服务接口别名
|
||||||
ProjectApiAlias string `json:"project_api_alias"` // 项目接口别名
|
ServiceApiConfig *ServiceApiConfig `json:"service_api_config"` // 服务接口配置
|
||||||
ProjectApiAliasID int64 `json:"project_api_alias_id"` // 项目接口别名ID
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GatewayApiDetailRequestRewriteItem 请求重写参数信息表
|
// RequestRewriteItem 请求转换规则配置
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 18:02 2024/5/13
|
// Date : 11:16 2024/11/13
|
||||||
type GatewayApiDetailRequestRewriteItem struct {
|
type RequestRewriteItem struct {
|
||||||
SourceProjectApiAlias string `json:"source_project_api_alias"` // 数据源项目接口别名 __GATEWAY__ 代表从网关读取
|
SourceServiceApiAlias string `json:"source_service_api_alias"` // 数据源项目接口别名 __GATEWAY__ 代表从网关读取
|
||||||
SourceProjectID int64 `json:"source_project_id"` // 数据源项目ID
|
SourceServiceApiResultLocation string `json:"source_service_api_result_location"` // 数据源接口返回值位置
|
||||||
SourceProjectApiID int64 `json:"source_project_api_id"` // 数据源项目接口ID
|
SourceServiceApiResultPath string `json:"source_service_api_result_path"` // 数据源接口返回值路径, SourceServiceApiAlias = __GATEWAY__ 代表从网关读取
|
||||||
SourceProjectApiResultID int64 `json:"source_project_api_result_id"` // 数据源接口返回值ID, SourceProjectApiAlias = __GATEWAY__ 代表从网关读取
|
TargetServiceApiAlias string `json:"target_service_api_alias"` // 目标接口接口别名
|
||||||
TargetProjectApiAlias string `json:"target_project_api_alias"` // 目标接口接口别名
|
TargetServiceApiParamLocation string `json:"target_service_api_param_location"` // 目标接口的参数位置
|
||||||
TargetProjectID int64 `json:"target_project_id"` // 目标项目ID
|
TargetServiceApiParamPath string `json:"target_service_api_param_path"` // 目标接口的参数路径
|
||||||
TargetProjectApiID int64 `json:"target_project_api_id"` // 目标项目接口ID
|
|
||||||
TargetProjectApiParamID int64 `json:"target_project_api_param_id"` // 目标项目接口参数ID
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GatewayApiDetailResultItem 网关响应信息表
|
// Result 网关响应信息表
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 18:03 2024/5/13
|
// Date : 11:21 2024/11/13
|
||||||
type GatewayApiDetailResultItem struct {
|
type Result struct {
|
||||||
ID int64 `json:"id"` // 网关接口返回值ID
|
|
||||||
SourceProjectApiAlias string `json:"source_project_api_alias"` // 数据源项目接口别名 __GATEWAY__ 代表从网关读取
|
SourceProjectApiAlias string `json:"source_project_api_alias"` // 数据源项目接口别名 __GATEWAY__ 代表从网关读取
|
||||||
SourceDataLocation string `json:"source_data_location"` // 数据源数据位置
|
SourceDataLocation string `json:"source_data_location"` // 数据源数据位置
|
||||||
SourceDataPath string `json:"source_data_path"` // 数据源数据路径
|
SourceDataPath string `json:"source_data_path"` // 数据源数据路径
|
||||||
@ -129,27 +141,31 @@ type GatewayApiDetailResultItem struct {
|
|||||||
OutputDataType string `json:"output_data_type"` // 网关输出数据类型
|
OutputDataType string `json:"output_data_type"` // 网关输出数据类型
|
||||||
}
|
}
|
||||||
|
|
||||||
type GatewayApiDetailParamItem struct {
|
// Param 网关接口参数数据结构
|
||||||
ID int64 `json:"id"` // 参数ID
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 11:20 2024/11/13
|
||||||
|
type Param struct {
|
||||||
Location string `json:"location"` // 参数位置
|
Location string `json:"location"` // 参数位置
|
||||||
Path string `json:"path"` // 参数名称
|
Path string `json:"path"` // 参数路径
|
||||||
ParamType string `json:"param_type"` // 参数类型
|
ParamType string `json:"param_type"` // 参数类型
|
||||||
DefaultValue string `json:"default_value"` // 默认值
|
DefaultValue string `json:"default_value"` // 默认值
|
||||||
IsRequired bool `json:"is_required"` // 是否必传
|
IsRequired bool `json:"is_required"` // 是否必传
|
||||||
AllowEmpty bool `json:"allow_empty"` // 空字符串是否为有效参数
|
AllowEmpty bool `json:"allow_empty"` // 空字符串是否为有效参数
|
||||||
AllowZero bool `json:"allow_zero"` // 数字类型, 0 是否为有效参数
|
AllowZero bool `json:"allow_zero"` // 数字类型, 0 是否为有效参数
|
||||||
AllowNil bool `json:"allow_nil"` // nil 是否为有效参数
|
AllowNil bool `json:"allow_nil"` // nil 是否为有效参数
|
||||||
|
ValidateRule any `json:"validate_rule"` // 校验规则 : TODO : 预留
|
||||||
}
|
}
|
||||||
|
|
||||||
// GatewayApiDetailProjectApiItem 项目接口规则
|
// ServiceApiConfig 服务接口配置
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 17:44 2024/5/13
|
// Date : 17:44 2024/5/13
|
||||||
type GatewayApiDetailProjectApiItem struct {
|
type ServiceApiConfig struct {
|
||||||
ProjectFlag string `json:"project_flag"` // 项目标识
|
ServiceFlag string `json:"service_flag"` // 服务标识标识
|
||||||
ProjectID int64 `json:"project_id"` // 项目ID
|
ServiceApiFlag string `json:"service_api_flag"` // 服务接口标识
|
||||||
ProjectApiID int64 `json:"project_api_id"` // 项目接口ID
|
|
||||||
CacheEnable bool `json:"cache_enable"` // 缓存是否可用
|
CacheEnable bool `json:"cache_enable"` // 缓存是否可用
|
||||||
CacheInstanceID int64 `json:"cache_instance_id"` // 缓存可用的情况下, 缓存实例ID
|
CacheInstanceID int64 `json:"cache_instance_id"` // 缓存可用的情况下, 缓存实例ID
|
||||||
CacheConfig *ApiCacheConfig `json:"cache_config"` // 缓存配置
|
CacheConfig *ApiCacheConfig `json:"cache_config"` // 缓存配置
|
||||||
@ -180,19 +196,18 @@ type ApiCacheConfig struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type GatewayApiDetail struct {
|
type GatewayApiDetail struct {
|
||||||
RateLimit *RateLimit `json:"rate_limit"` // 网关接口流控规则
|
RateLimit *RateLimit `json:"rate_limit"` // 网关接口流控规则
|
||||||
GatewayApiID int64 `json:"gateway_api_id"` // 网关接口ID
|
GatewayApiID int64 `json:"gateway_api_id"` // 网关接口ID
|
||||||
Uri string `json:"uri"` // 网关接口ID
|
Uri string `json:"uri"` // 网关接口ID
|
||||||
ContentType string `json:"content_type"` // 请求类型
|
ContentType string `json:"content_type"` // 请求类型
|
||||||
Method string `json:"method"` // 请求方法
|
Method string `json:"method"` // 请求方法
|
||||||
Version string `json:"version"` // 接口版本
|
Version string `json:"version"` // 接口版本
|
||||||
Name string `json:"name"` // 接口名称
|
Name string `json:"name"` // 接口名称
|
||||||
Status string `json:"status"` // 状态
|
Status string `json:"status"` // 状态
|
||||||
ParamList []*GatewayApiDetailParamItem `json:"param_list"` // 参数列表
|
ParamList []*Param `json:"param_list"` // 参数列表
|
||||||
ResultList []*GatewayApiDetailResultItem `json:"result_list"` // 返回值列表
|
ResultList []*Result `json:"result_list"` // 返回值列表
|
||||||
ProjectApiTable map[int64]*GatewayApiDetailProjectApiItem `json:"project_api_table"` // 项目接口列表
|
ProjectApiTable map[int64]*ServiceApiConfig `json:"project_api_table"` // 项目接口列表
|
||||||
RequestGroup [][]*GatewayApiDetailRequestGroupItem `json:"request_group"` // 请求分组
|
RequestRewriteTable map[string][]*RequestRewriteItem `json:"request_rewrite_table"` // 请求重写规则, 项目接口别名ID => 重写规则列表
|
||||||
RequestRewriteTable map[string][]*GatewayApiDetailRequestRewriteItem `json:"request_rewrite_table"` // 请求重写规则, 项目接口别名ID => 重写规则列表
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type GatewayApi struct {
|
type GatewayApi struct {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user