路由

未匹配的标注

介绍

这是一个文档先行的框架,所有功能先写文档才方便写代码。

定义路由

进入目录 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")
}

项目地址 通用工具

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~