goctl创建项目,添加自定义配置

📅 2026/7/16 23:32:15 👁️ 阅读次数 📝 编程学习
goctl创建项目,添加自定义配置

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.添加和打印自定义配置

  1. 添加自定义配置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
  1. 读取自定义配置firstdemo\internal\config\config.go
packageconfigimport"github.com/zeromicro/go-zero/rest"typeConfigstruct{rest.RestConf// 挂载自定义配置Mysqlstruct{Datasourcestring}}
  1. 将自定义配置挂载到上下文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,}}
  1. 在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}
  1. 启动应用时打印自定义配置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