1.创建项目,初始化项目
goctl api new firstdemocdfirstdemo go mod tidy
2.运行
go run firstdemo.go
3.修改firstdemo.api文件后,重新生成代码
goctl api go--api./firstdemo.api--dir.go run firstdemo.go
4.添加和打印自定义配置
- 添加自定义配置
firstdemo\etc\firstdemo-api.yaml
Name:firstdemo-apiHost:0.0.0.0Port:8888# 添加mysql的自定义配置MySql:Datasource:root:password@tcp(127.0.0.1:3306)/gin?charset=utf8mb4&parseTime=True&loc=Local
- 读取自定义配置
firstdemo\internal\config\config.go
packageconfigimport"github.com/zeromicro/go-zero/rest"typeConfigstruct{rest.RestConf// 挂载自定义配置Mysqlstruct{Datasourcestring}}
- 将自定义配置挂载到上下文
firstdemo\internal\svc\servicecontext.go
packagesvcimport("firstdemo/internal/config")typeServiceContextstruct{Config config.Config// 在上下文结构体中添加变量Datasourcestring}funcNewServiceContext(c config.Config)*ServiceContext{return&ServiceContext{Config:c,// 将config挂载到上下文结构体Datasource:c.Mysql.Datasource,}}
- 在handler中将结构体返回给前端
firstdemo\internal\logic\firstdemologic.go
func(l*FirstdemoLogic)Firstdemo(req*types.Request)(resp*types.Response,errerror){// 获取自定义配置的mysql.datasourcedatasource:=l.svcCtx.Datasource resp=&types.Response{Message:"你好:"+req.Name+"\t"+datasource,}returnresp,nil}
- 启动应用时打印自定义配置
firstdemo\firstdemo.go
packagemainimport("flag""fmt""firstdemo/internal/config""firstdemo/internal/handler""firstdemo/internal/svc""github.com/zeromicro/go-zero/core/conf""github.com/zeromicro/go-zero/rest")varconfigFile=flag.String("f","etc/firstdemo-api.yaml","the config file")funcmain(){flag.Parse()// 初始化配置文件varc config.Config conf.MustLoad(*configFile,&c)fmt.Println("host:port",c.Host,c.Port)// 输出自定义配置fmt.Println("mysql database: ",c.Mysql.Datasource)// 创建服务server:=rest.MustNewServer(c.RestConf)deferserver.Stop()// 注册上下文ctx:=svc.NewServiceContext(c)handler.RegisterHandlers(server,ctx)// 启动服务fmt.Printf("Starting server at %s:%d...\n",c.Host,c.Port)server.Start()}
5.重启并查看结果
go run firstdemo.go
![]()