📃
fresh-go
  • READEME
  • 简介
    • 前言
    • 工程目录结构
  • 快速上手
    • 安装
    • 五分钟教程
Powered by GitBook
On this page
  • 新建项目
  • 运行 demo
  • 新建 API

Was this helpful?

  1. 快速上手

五分钟教程

项目、API 的创建非模板填写,会调用 go mod tidy 等命令,将出现按需拉取 github 代码的情况,耗时视网络环境而定。

我本地有缓存的情况下(之前新建过),新建项目大约 20s

我本地有缓存的情况下(之前新建过),新建 API 大约 5s

新建项目

最简单的模式:

$ fresh-go new helloworld # helloworld 为项目名称

带上 remote 和 owner 创建项目

$ fresh-go new helloworld --remote=github.com --owner=SmallTianTian

你可以通过开启帮助,来查看新建项目支持哪些可选项。

$ fresh-go new --help

这里有个简单的全家福介绍:

$ fresh-go new hello \             # 项目名称
           --debug \               # 打开 debug 开关,查看工具运行日志
           --grpc=false \          # 关闭 gRPC 服务,默认是开启,将导致 proxy 服务一同关闭
           --log=logrus \          # 使用 logrus 作为日志框架,默认是 zap。目前有 logrus 和 zap 可选
           --remote=github.com \   # remote 为 github.com。将体现在 go.mod 的 module 中,例如本项目 module 为 github.com/SmallTianTian/fresh-go,remote 就是 github.com
           --owner=SmallTianTian \ # owner 为 SmallTianTian,一般为用户名或者组织名。将体现在 go.mod 的 module 中,例如本项目 module 为 github.com/SmallTianTian/fresh-go,owner 就是 SmallTianTian
           -p=/root/workspace/go \ # 项目创建路径,依托 go.mod,我们可以将项目创建在任何地方
           --proxy=false \         # 关闭 gRPC proxy,默认是开启,gRPC 服务的关闭也会导致 proxy 服务关闭。
           --vendor                # 开启 vendor 目录,默认不开启。

关于 remote 和 owner 可能有点儿绕,官方也没有这样的规定,这是参考 git 路径的来的,module 由如下结构构成。remote 和 owner 为可选项,但 owner 出现时必须有 remote。

<remote>/<owner>/<project>

运行 demo

新建完项目后,你可以通过如下两种命令中的一个来运行项目:

$ make run # 推荐做法,但需要本地有 make 及 golang-ci 插件
# 上下两条命令选一条执行即可
$ go run cmd/server/main.go cmd/server/wire_gen.go # 仅使用 go 命令

你将看到程序将日志打印在终端,如果没有去掉 gRPC 及 proxy 服务,你可以看到它们监听 gRPC(:50051) 和 proxy(:8089) 端口,你可以使用如下命令来查看程序响应:

$ curl 'http://localhost:8089/say/bob'

# 下面为响应示例
{"message":"Hello bob~"}

新建 API

当需要加入新的服务时,你可以通过本工具来快速创建模板。

使用如下命令:

$ fresh-go api user

稍等片刻,你将能看到项目中

  1. api 目录中多出了 user 文件夹,里面有 user 相关的 proto 文件,proto 编译后的代码。

  2. 在 internal/ui/grpc 中看到名为 user_v1.go 的对应 service 实现。

  3. 对应的 service 实现已经被注册进系统启动中。

proto 已经包含默认的 create、 delete、 update、 get、 list‌ 方法,你需要在 proto 中补齐相关请求及响应的字段,并在实现中完善代码即可。

此时,你可以像运行 demo 一样运行项目,新的 api 也将可以被访问。

$ curl -v 'http://localhost:8089/v1/user/1'

# 下面为新建 API,但没有实现的响应
{"Code":1,"Message":"NOT SUPPORT.","Action":"","Reason":"","Details":[],"CauseError":""}
Previous安装

Last updated 4 years ago

Was this helpful?