当前仓库属于暂停状态,部分功能使用受限,详情请查阅 仓库状态说明
55 Star 265 Fork 97

fagongzi / gateway
暂停

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
http_api.go 1.94 KB
一键复制 编辑 原始数据 按行查看 历史
张旭 提交于 2018-04-19 15:31 . dev: add restful support for api server
package service
import (
"fmt"
"github.com/fagongzi/gateway/pkg/pb/metapb"
"github.com/fagongzi/grpcx"
"github.com/fagongzi/log"
"github.com/labstack/echo"
)
func initAPIRouter(server *echo.Echo) {
server.GET(fmt.Sprintf("/%s%s", apiVersion, "/apis/:id"),
grpcx.NewGetHTTPHandle(idParamFactory, getAPIHandler))
server.DELETE(fmt.Sprintf("/%s%s", apiVersion, "/apis/:id"),
grpcx.NewGetHTTPHandle(idParamFactory, deleteAPIHandler))
server.PUT(fmt.Sprintf("/%s%s", apiVersion, "/apis"),
grpcx.NewJSONBodyHTTPHandle(putAPIFactory, postAPIHandler))
server.GET(fmt.Sprintf("/%s%s", apiVersion, "/apis"),
grpcx.NewGetHTTPHandle(limitQueryFactory, listAPIHandler))
}
func postAPIHandler(value interface{}) (*grpcx.JSONResult, error) {
id, err := Store.PutAPI(value.(*metapb.API))
if err != nil {
log.Errorf("api-api-put: req %+v, errors:%+v", value, err)
return nil, err
}
return &grpcx.JSONResult{Data: id}, nil
}
func deleteAPIHandler(value interface{}) (*grpcx.JSONResult, error) {
err := Store.RemoveAPI(value.(uint64))
if err != nil {
log.Errorf("api-api-delete: req %+v, errors:%+v", value, err)
return nil, err
}
return &grpcx.JSONResult{}, nil
}
func getAPIHandler(value interface{}) (*grpcx.JSONResult, error) {
value, err := Store.GetAPI(value.(uint64))
if err != nil {
log.Errorf("api-api-get: req %+v, errors:%+v", value, err)
return nil, err
}
return &grpcx.JSONResult{Data: value}, nil
}
func listAPIHandler(value interface{}) (*grpcx.JSONResult, error) {
query := value.(*limitQuery)
var values []*metapb.API
err := Store.GetAPIs(limit, func(data interface{}) error {
v := data.(*metapb.API)
if int64(len(values)) < query.limit && v.ID > query.afterID {
values = append(values, v)
}
return nil
})
if err != nil {
log.Errorf("api-api-list-get: req %+v, errors:%+v", value, err)
return nil, err
}
return &grpcx.JSONResult{Data: values}, nil
}
func putAPIFactory() interface{} {
return &metapb.API{}
}
Go
1
https://gitee.com/fagongzi/gateway.git
git@gitee.com:fagongzi/gateway.git
fagongzi
gateway
gateway
v2.5.1

搜索帮助