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

fagongzi / gateway
暂停

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
http_routing.go 2.04 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 initRoutingRouter(server *echo.Echo) {
server.GET(fmt.Sprintf("/%s%s", apiVersion, "/routings/:id"),
grpcx.NewGetHTTPHandle(idParamFactory, getRoutingHandler))
server.DELETE(fmt.Sprintf("/%s%s", apiVersion, "/routings/:id"),
grpcx.NewGetHTTPHandle(idParamFactory, deleteRoutingHandler))
server.PUT(fmt.Sprintf("/%s%s", apiVersion, "/routings"),
grpcx.NewJSONBodyHTTPHandle(putRoutingFactory, postRoutingHandler))
server.GET(fmt.Sprintf("/%s%s", apiVersion, "/routings"),
grpcx.NewGetHTTPHandle(limitQueryFactory, listRoutingHandler))
}
func postRoutingHandler(value interface{}) (*grpcx.JSONResult, error) {
id, err := Store.PutRouting(value.(*metapb.Routing))
if err != nil {
log.Errorf("api-routing-put: req %+v, errors:%+v", value, err)
return nil, err
}
return &grpcx.JSONResult{Data: id}, nil
}
func deleteRoutingHandler(value interface{}) (*grpcx.JSONResult, error) {
err := Store.RemoveRouting(value.(uint64))
if err != nil {
log.Errorf("api-routing-delete: req %+v, errors:%+v", value, err)
return nil, err
}
return &grpcx.JSONResult{}, nil
}
func getRoutingHandler(value interface{}) (*grpcx.JSONResult, error) {
value, err := Store.GetRouting(value.(uint64))
if err != nil {
log.Errorf("api-routing-delete: req %+v, errors:%+v", value, err)
return nil, err
}
return &grpcx.JSONResult{Data: value}, nil
}
func putRoutingFactory() interface{} {
return &metapb.Routing{}
}
func listRoutingHandler(value interface{}) (*grpcx.JSONResult, error) {
query := value.(*limitQuery)
var values []*metapb.Routing
err := Store.GetRoutings(limit, func(data interface{}) error {
v := data.(*metapb.Routing)
if int64(len(values)) < query.limit && v.ID > query.afterID {
values = append(values, v)
}
return nil
})
if err != nil {
log.Errorf("api-routing-list-get: req %+v, errors:%+v", value, err)
return nil, err
}
return &grpcx.JSONResult{Data: values}, nil
}
Go
1
https://gitee.com/fagongzi/gateway.git
git@gitee.com:fagongzi/gateway.git
fagongzi
gateway
gateway
v2.5.1

搜索帮助