如何使用go-zero开发线上项目
Go-Zero是一款快速、强大、可靠的Go语言开发框架,它可以帮助开发人员快速地构建基于微服务的应用程序。Go-Zero 相信“做 的 Go 微服务框架”的理念,此框架的整体设计非常人性化和面向解决实际业务问题,这样在实际开发中,不管是快速迭代开发还是上线运维,都比较直观和便捷。
下面,将详细介绍如何使用 Go-Zero 开发线上项目。
### 步骤1:安装Go-Zero
使用 Go-Zero 开发之前需要先安装相应的Go开发环境,可以去官网下载Go环境并安装。接着执行以下指令安装 Go-Zero 开发框架:
$ GO111MODULE=on GOPROXY=https://proxy.golang.org go get -u github.com/tal-tech/go-zero
执行安装后,可以查看 go-zero 命令是否正常工作:
go-zero -version
若能正常输出Go-Zero的版本信息,说明安装成功。
### 步骤2:创建go-zero项目
安装完 Go-Zero 后,可以通过 goctl 工具创建项目:
$ goctl new helloworld
该命令会在当前目录下生成 helloworld 文件夹,即整个项目的起始目录。
### 步骤3:编写api服务
接下来,我们可以使用 goctl 工具创建api服务:
$ cd helloworld $ goctl api new greet
执行完成之后,在 helloworld 目录下会出现 greet.api、greet.go 和 greet.proto 三个文件,这就是一个完整的API。
编辑 greet.api 文件:
type Request struct {
Name string path:"name"
Age int query:"age"
}
type Response struct {
Text string json:"text"
}
service hello {
@handler sayHello
get /hello/:name(.*)
Request {
Name string path:"name"
Age int query:"age"
}
Response {
Text string json:"text"
}
}
同时,编辑 greet.go 文件,添加sayHello方法:
package handler
import (
"context"
"fmt"
"github.com/tal-tech/go-zero/rest/httpx"
)
func sayHello(ctx context.Context, req *types.Request) (*types.Response, error) {
return &types.Response{
Text: fmt.Sprintf("Hello, %s!", req.Name),
}, nil
}
在成功编辑 greet.api 和 greet.go 文件后,执行以下指令生成代码:
$ goctl api go -api greet.api -dir .
经过一系列操作,就能够启动API服务了:
$ go run greet.go -f etc/greet-api.yaml
### 步骤4:编写model服务
匹配dao的sql文件,生成代码
$ goctl model mysql dsn -c ~/etc/user.yaml -table users \ -dir . -p blog -o user.sql $ goctl model mysql ddl -c ~/etc/user.yaml -src user.sql \ -dir . -p blog -o usermodel.go
目录下会生成usermodel.go和usermodel_test.go两个文件,其中usermodel.go中包含user表的增删改查方法,同时会关联枚举类型常量,以及以表名+cache的方式定义好相应的cache实例。
一如既往的使用dao方法:
u := &model.User{
Username: "louyuting",
Password: "123",
Nickname: "loooser",
}
if err := model.NewUserModel(envs.DefaultConf).Insert(u); err != nil {
log.Fatal(err)
}
### 步骤5:编写config、servant服务
中定义好servant的名称,Java和PHP开发人员可依据此文件定义好自己的API接口和configuration文件。
中规范定义好api和model等依赖,例如:
OrderModel: name: order driver: mysql dataSource: "root:123456@tcp(127.0.0.1:3306)/orderdb" table: product_order debug: false maxIdle: 10 maxOpen: 100 Trace: # whether trace enable: true服务就可以按照api和model中的定义进行顺畅调用。
到这里,我们就可以使用 Go-Zero 开发完整的线上应用程序了。通过Go-Zero,我们能够享受快速、稳定、灵活的开发流程,充分利用 Go 语言的优势,流畅、高效地进行项目开发。
