路由
介绍
这是一个文档先行的框架,所有功能先写文档才方便写代码。
定义路由
进入目录 protobuf/api
新建你的文件 protobuf/api/api_public.proto
syntax = "proto3";
package api;
import "http_config.proto";
option go_package = "github.com/go-home-admin/go-admin/generate/proto/api";
service Public {
// 这里是路由分组,可以统一在app/providers/route_provider.go设置前缀和中间件
option (http.RouteGroup) = "api";
// 测试接口1, 注释会体现到文档上
rpc Home(HomeRequest)returns(HomeResponse){
option (http.Get) = "/";
}
// 测试接口2
rpc Test(HomeRequest)returns(HomeResponse){
// option (http.Get)
// option (http.Head)
// option (http.Post)
// option (http.Put)
// option (http.Delete)
// option (http.Options)
option (http.Post) = "/test";
}
}
message HomeRequest {
// 参数文档
int64 id = 1;
}
message HomeResponse {
// 参数文档1
string start_time = 1;
// 参数文档2
string tip = 2;
}
生成运行代码
执行命令 make gen
输出如下
go-admin on develop [!?] via 🐹 v1.18
❯ make gen
toolset make:protoc
toolset make:route
toolset make:bean
toolset make:swagger
gen openapi.json to /Users/lv/Desktop/github.com/go-admin/web/swagger.json
如果你的电脑未安装Makefile
, 也可以逐一手动执行命令
toolset make:protoc
toolset make:route
toolset make:bean
toolset make:swagger
到这里,新增的接口已经可以正常运行了,只是没有逻辑也没有输出任何内容。需要你进入http 目录下,修改新生成的文件,补充逻辑。
设置中间件
进入文件 app/providers/route_provider.go
, 修改您的中间件, 如果你的api分组不需要前缀或者中间件,可以不用修改。
package providers
import (
"github.com/go-home-admin/go-admin/routes"
"github.com/go-home-admin/home/bootstrap/providers"
)
// Route 路由服务
// @Bean
type Route struct {
*providers.RouteProvider `inject:""`
}
// Init
// 设置路由的前缀+中间件
// 中间件使用http/kernel.go下的分组名称
// 如果不设置, 默认没有前缀
func (a *Route) Init() {
a.LoadRoute(routes.GetAllProvider())
a.Group("admin").Prefix("/admin").Middleware("admin")
a.Group("admin-public").Prefix("/admin")
}