resolved #2,resolved #3

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

@ -49,6 +49,10 @@ func (m *Manage) Start() {
e.POST("/manage/auditLog/count", audit.Count, auth) e.POST("/manage/auditLog/count", audit.Count, auth)
e.POST("/manage/auditLog/load", audit.Load, auth) e.POST("/manage/auditLog/load", audit.Load, auth)
// API调试
e.POST("/manage/api/saveParam", m.APISaveParam, auth)
e.GET("/manage/api/queryParam", m.APIQueryParam, auth)
e.Logger.Fatal(e.Start(":" + misc.Conf.Manage.Port)) e.Logger.Fatal(e.Start(":" + misc.Conf.Manage.Port))
} }

@ -0,0 +1,92 @@
package manage
import (
"fmt"
"net/http"
"github.com/labstack/echo"
"github.com/mafanr/g"
"github.com/sunface/talent"
"go.uber.org/zap"
)
type TestApi struct {
ID int `json:"id" db:"id"`
ApiID string `json:"api_id" db:"api_id"`
Params string `json:"params" db:"params"`
ModifyDate string `json:"modify_date" db:"modify_date"`
}
/* API调试模块 */
func (m *Manage) APIQueryParam(c echo.Context) error {
apiID := talent.FormValue(c, "api_id")
if apiID == "" {
return c.JSON(http.StatusBadRequest, g.Result{
Status: http.StatusBadRequest,
ErrCode: g.ParamEmptyC,
Message: g.ParamEmptyE,
})
}
query := fmt.Sprintf("select params from test_api where api_id='%s'", apiID)
rows, err := g.DB.Query(query)
if err != nil {
g.Info("access database error", zap.Error(err), zap.String("query", query))
return c.JSON(http.StatusInternalServerError, g.Result{
Status: http.StatusInternalServerError,
ErrCode: g.DatabaseC,
Message: g.DatabaseE,
})
}
var params string
rows.Next()
rows.Scan(&params)
return c.JSON(http.StatusOK, g.Result{
Status: http.StatusOK,
Data: params,
})
}
func (m *Manage) APISaveParam(c echo.Context) error {
apiID := talent.FormValue(c, "api_id")
params := talent.FormValue(c, "params")
if apiID == "" || params == "" {
return c.JSON(http.StatusBadRequest, g.Result{
Status: http.StatusBadRequest,
ErrCode: g.ParamEmptyC,
Message: g.ParamEmptyE,
})
}
// 判断是否已经存在,若存在则更新
var temp interface{}
exist := false
query := fmt.Sprintf("select id from test_api where api_id='%s'", apiID)
err := g.DB.Get(&temp, query)
if err == nil {
exist = true
}
if !exist {
query = fmt.Sprintf("insert into test_api (api_id,params) values ('%s','%s')", apiID, params)
} else {
query = fmt.Sprintf("update test_api set params='%s' where api_id='%s'", params, apiID)
}
_, err = g.DB.Exec(query)
if err != nil {
g.Info("access database error", zap.Error(err), zap.String("query", query))
return c.JSON(http.StatusInternalServerError, g.Result{
Status: http.StatusInternalServerError,
ErrCode: g.DatabaseC,
Message: g.DatabaseE,
})
}
return c.JSON(http.StatusOK, g.Result{
Status: http.StatusOK,
})
}

@ -125,7 +125,7 @@ func (rt *router) sync(r *req.Request) (int, []byte, error) {
} else { // get url from etcd } else { // get url from etcd
s := g.GetServer(r.Api.BackendAddr) s := g.GetServer(r.Api.BackendAddr)
if s == nil { if s == nil {
return http.StatusServiceUnavailable, nil, errors.New("no target server available") return http.StatusServiceUnavailable, nil, errors.New("no server available")
} }
url = "http://" + s.IP + r.Api.BackendURI url = "http://" + s.IP + r.Api.BackendURI
} }

@ -116,3 +116,12 @@ CREATE TABLE IF NOT EXISTS `audit_log` (
KEY `Index_audit_log_type` (`target_type`) USING BTREE, KEY `Index_audit_log_type` (`target_type`) USING BTREE,
KEY `Index_audit_log_modifydate` (`modify_date`) USING BTREE KEY `Index_audit_log_modifydate` (`modify_date`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '审计日志表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '审计日志表';
CREATE TABLE IF NOT EXISTS `test_api` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`api_id` varchar(255) DEFAULT '' COMMENT 'API ID',
`params` TEXT COMMENT '测试参数',
`modify_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间',
PRIMARY KEY (`id`),
KEY `Index_api_test_apiid` (`api_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'API调试表';

Loading…
Cancel
Save