pull/25/head
sunface 7 years ago
parent 77b66ea4d1
commit ae0679d880

@ -20,8 +20,8 @@ func (p *ApiServer) loadData() {
now := time.Now()
date := talent.Time2StringSecond(time.Now())
version := talent.Time2Version(now)
g.DB.Exec(fmt.Sprintf("insert into api_release (service,api_id,description,mock_data,route_type,backend_addr,app,create_date) values('admin','admin.test.get.v1','','',1,'http://httpbin.org/get','admin','%s')", date))
g.DB.Exec(fmt.Sprintf("insert into api_define (service,api_id,description,mock_data,route_type,backend_addr,revise_version,release_version,app,create_date) values('admin','admin.test.get.v1','','',1,'http://httpbin.org/get','%s','%s','admin','%s')", version, version, date))
g.DB.Exec(fmt.Sprintf("insert into api_release (service,api_id,description,mock_data,route_type,backend_addr,app,create_date,method) values('admin','admin.test.get.v1','','',1,'http://httpbin.org/get','admin','%s','GET')", date))
g.DB.Exec(fmt.Sprintf("insert into api_define (service,api_id,description,mock_data,route_type,backend_addr,revise_version,release_version,app,create_date,method) values('admin','admin.test.get.v1','','',1,'http://httpbin.org/get','%s','%s','admin','%s','GET')", version, version, date))
lastLoadTime = time.Now()
// 加载所有数据

@ -144,9 +144,9 @@ func (m *Manage) DefineAPI(c echo.Context) error {
pr := g.B64.EncodeToString(talent.String2Bytes(*api.ParamTable))
if action == "create" {
query := fmt.Sprintf(`insert into api_define (api_id,path_type,service,description,route_type,backend_addr,backend_type,bw_strategy,retry_strategy,traffic_strategy,mock_data,traffic_on,traffic_api,traffic_ratio,traffic_ips,verify_on,param_rules,cached_time,revise_version,create_date,app,addr_type,backend_uri)
values ('%s','%d','%s','%s','%d','%s','%d','%d','%d','%d','%s','%d','%s','%d','%s','%d','%s','%d','%s', '%s','%s','%d','%s')`,
api.APIID, api.PathType, api.Service, *api.Desc, api.RouteType, api.BackendAddr, api.BackendType, api.BwStrategy, api.RetryStrategy, api.TrafficStrategy, *api.MockData, api.TrafficOn, api.TrafficAPI, api.TrafficRatio, api.TrafficIPs, api.VerifyOn, pr, api.CachedTime, talent.Time2Version(now), date, api.App, api.AddrType, api.BackendURI)
query := fmt.Sprintf(`insert into api_define (api_id,path_type,service,description,route_type,backend_addr,backend_type,bw_strategy,retry_strategy,traffic_strategy,mock_data,traffic_on,traffic_api,traffic_ratio,traffic_ips,verify_on,param_rules,cached_time,revise_version,create_date,app,addr_type,backend_uri,method)
values ('%s','%d','%s','%s','%d','%s','%d','%d','%d','%d','%s','%d','%s','%d','%s','%d','%s','%d','%s', '%s','%s','%d','%s','%s')`,
api.APIID, api.PathType, api.Service, *api.Desc, api.RouteType, api.BackendAddr, api.BackendType, api.BwStrategy, api.RetryStrategy, api.TrafficStrategy, *api.MockData, api.TrafficOn, api.TrafficAPI, api.TrafficRatio, api.TrafficIPs, api.VerifyOn, pr, api.CachedTime, talent.Time2Version(now), date, api.App, api.AddrType, api.BackendURI, api.Method)
_, err := g.DB.Exec(query)
if err != nil {
if strings.Contains(err.Error(), g.DUP_KEY_ERR) {
@ -178,8 +178,8 @@ func (m *Manage) DefineAPI(c echo.Context) error {
}
audit.Log(c.FormValue("username"), api.Service, audit.TypeApi, api.APIID, audit.OpCreate, c.FormValue("api"), "")
} else {
query := fmt.Sprintf("update api_define set description='%s',route_type='%d',backend_addr='%s',backend_type='%d',bw_strategy='%d',retry_strategy='%d',traffic_strategy='%d',mock_data='%s',traffic_on='%d',traffic_api='%s',traffic_ratio='%d',traffic_ips='%s',verify_on='%d',param_rules='%s',cached_time='%d',app='%s',addr_type='%d',backend_uri='%s' where api_id='%s'",
*api.Desc, api.RouteType, api.BackendAddr, api.BackendType, api.BwStrategy, api.RetryStrategy, api.TrafficStrategy, *api.MockData, api.TrafficOn, api.TrafficAPI, api.TrafficRatio, api.TrafficIPs, api.VerifyOn, pr, api.CachedTime, api.App, api.AddrType, api.BackendURI, api.APIID)
query := fmt.Sprintf("update api_define set description='%s',route_type='%d',backend_addr='%s',backend_type='%d',bw_strategy='%d',retry_strategy='%d',traffic_strategy='%d',mock_data='%s',traffic_on='%d',traffic_api='%s',traffic_ratio='%d',traffic_ips='%s',verify_on='%d',param_rules='%s',cached_time='%d',app='%s',addr_type='%d',backend_uri='%s',method='%s' where api_id='%s'",
*api.Desc, api.RouteType, api.BackendAddr, api.BackendType, api.BwStrategy, api.RetryStrategy, api.TrafficStrategy, *api.MockData, api.TrafficOn, api.TrafficAPI, api.TrafficRatio, api.TrafficIPs, api.VerifyOn, pr, api.CachedTime, api.App, api.AddrType, api.BackendURI, api.Method, api.APIID)
res, err := g.DB.Exec(query)
if err != nil {
g.Info("access database error", zap.Error(err), zap.String("query", query))
@ -457,8 +457,8 @@ func (m *Manage) APIRelease(c echo.Context) error {
}
// 更新release
query = fmt.Sprintf("update api_release set description='%s',route_type='%d',backend_addr='%s',backend_type='%d',mock_data='%s',retry_strategy='%d',bw_strategy='%d',traffic_strategy='%d',traffic_on='%d',traffic_api='%s',traffic_ratio='%d',traffic_ips='%s',verify_on='%d',param_rules='%s', cached_time='%d',status='%d',app='%s',addr_type='%d',backend_uri='%s' where api_id='%s'",
*api.Desc, api.RouteType, api.BackendAddr, api.BackendType, *api.MockData, api.RetryStrategy, api.BwStrategy, api.TrafficStrategy, api.TrafficOn, api.TrafficAPI, api.TrafficRatio, api.TrafficIPs, api.VerifyOn, *api.ParamTable, api.CachedTime, misc.API_RELEASED, api.App, api.AddrType, api.BackendURI, api.APIID)
query = fmt.Sprintf("update api_release set description='%s',route_type='%d',backend_addr='%s',backend_type='%d',mock_data='%s',retry_strategy='%d',bw_strategy='%d',traffic_strategy='%d',traffic_on='%d',traffic_api='%s',traffic_ratio='%d',traffic_ips='%s',verify_on='%d',param_rules='%s', cached_time='%d',status='%d',app='%s',addr_type='%d',backend_uri='%s',method='%s' where api_id='%s'",
*api.Desc, api.RouteType, api.BackendAddr, api.BackendType, *api.MockData, api.RetryStrategy, api.BwStrategy, api.TrafficStrategy, api.TrafficOn, api.TrafficAPI, api.TrafficRatio, api.TrafficIPs, api.VerifyOn, *api.ParamTable, api.CachedTime, misc.API_RELEASED, api.App, api.AddrType, api.BackendURI, api.Method, api.APIID)
_, err = g.DB.Exec(query)
if err != nil {
@ -802,8 +802,8 @@ func (m *Manage) APIBatchRelease(c echo.Context) error {
}
// 更新release
query = fmt.Sprintf("update api_release set description='%s',route_type='%d',backend_addr='%s',backend_type='%d',mock_data='%s',retry_strategy='%d',bw_strategy='%d',traffic_on='%d',traffic_api='%s',traffic_ratio='%d',traffic_ips='%s',verify_on='%d',param_rules='%s', cached_time='%d',status='%d',app='%s',addr_type='%d',backend_uri='%s' where api_id='%s'",
*api.Desc, api.RouteType, api.BackendAddr, api.BackendType, *api.MockData, api.RetryStrategy, api.BwStrategy, api.TrafficOn, api.TrafficAPI, api.TrafficRatio, api.TrafficIPs, api.VerifyOn, *api.ParamTable, api.CachedTime, misc.API_RELEASED, api.App, api.AddrType, api.BackendURI, api.APIID)
query = fmt.Sprintf("update api_release set description='%s',route_type='%d',backend_addr='%s',backend_type='%d',mock_data='%s',retry_strategy='%d',bw_strategy='%d',traffic_on='%d',traffic_api='%s',traffic_ratio='%d',traffic_ips='%s',verify_on='%d',param_rules='%s', cached_time='%d',status='%d',app='%s',addr_type='%d',backend_uri='%s',method='%s' where api_id='%s'",
*api.Desc, api.RouteType, api.BackendAddr, api.BackendType, *api.MockData, api.RetryStrategy, api.BwStrategy, api.TrafficOn, api.TrafficAPI, api.TrafficRatio, api.TrafficIPs, api.VerifyOn, *api.ParamTable, api.CachedTime, misc.API_RELEASED, api.App, api.AddrType, api.BackendURI, api.Method, api.APIID)
_, err = g.DB.Exec(query)
if err != nil {

@ -113,7 +113,7 @@ func (rt *router) sync(r *req.Request) (int, []byte, error) {
// 请求头部加入request id方便后续业务进行跟踪
req.Header.Set("rid", strconv.FormatInt(r.Rid, 10))
req.Header.SetMethod(r.Method)
req.Header.SetMethod(r.Api.Method)
// 写入客户端真实ip
req.Header.Set("X-Forwarded-For", r.ClientIP)
@ -129,7 +129,7 @@ func (rt *router) sync(r *req.Request) (int, []byte, error) {
}
url = "http://" + s.IP + r.Api.BackendURI
}
switch r.Method {
switch r.Api.Method {
case "GET":
// 拼接url
url = url + "?" + args.String()

@ -7,13 +7,14 @@ CREATE TABLE IF NOT EXISTS `api_release` (
`path_type` int(11) DEFAULT '0' COMMENT '是否是路径映射类型0代表否1代表是',
`service` varchar(255) NOT NULL COMMENT 'service名',
`description` text COMMENT '介绍',
`route_type` int(11) NOT NULL DEFAULT '1' COMMENT '代理类型,1: direct 2: redirect',
`addr_type` int(11) DEFAULT '1' COMMENT '后端地址类型,1:直接寻址 2: ETCD服务发现',
`backend_addr` varchar(255) NOT NULL COMMENT '后段服务地址',
`backend_uri` varchar(255) DEFAUlT '' COMMENT '后端服务URI路径',
`backend_type` int(11) DEFAULT '1' COMMENT '后端服务协议,1: HTTP(S) 2: Mock',
`mock_data` text COMMENT 'mock类型接口返回定义的mock数据',
`method` varchar(255) DEFAULT 'POST' COMMENT 'HTTP METHOD',
`retry_strategy` int(11) DEFAULT '0' COMMENT '重试策略ID',
`bw_strategy` int(11) DEFAULT '0' COMMENT '黑白名单策略ID',
@ -54,7 +55,8 @@ CREATE TABLE IF NOT EXISTS `api_define` (
`backend_uri` varchar(255) DEFAUlT '' COMMENT '后端服务URI路径',
`backend_type` int(11) DEFAULT '1' COMMENT '后端服务协议,1: HTTP(S) 2: Mock',
`mock_data` text COMMENT 'mock类型接口返回定义的mock数据',
`method` varchar(255) DEFAULT 'POST' COMMENT 'HTTP METHOD',
`retry_strategy` int(11) DEFAULT '0' COMMENT '重试策略ID',
`bw_strategy` int(11) DEFAULT '0' COMMENT '黑白名单策略ID',
`traffic_strategy` int(11) DEFAULT '0' COMMENT '流量控制策略ID',

@ -24,6 +24,7 @@ type API struct {
BackendURI string `db:"backend_uri" json:"backend_uri"`
BackendType int `db:"backend_type" json:"backend_type"`
MockData *string `db:"mock_data" json:"mock_data"`
Method string `db:"method" json:"method"`
// 通用策略
RetryStrategy int `db:"retry_strategy" json:"retry_strategy"`

Loading…
Cancel
Save