gengin 基于 go-zero 开发,是一个 go-zero 的插件,只需定义 .api 文件,一行命令就可以生成整个项目的基础文件
正所谓站在巨人的肩膀上,看的比较远。
本项目基于 go-zero 开发的插件,只需定义 api 文件,即可生成 gin 框架工程目录,借鉴了 go-zero 的思想, 配置大于约定。指在提高开发人员的工作效率,减少沟通成本
使用本项目生成的代码,只会依赖 gin 框架,其他什么依赖都没有,非常简洁优雅
你当然可以使用 goctl 生成一个 http 单体服务,但是你可能更习惯使用 gin 框架的老司机, 在新项目你在纠结如何选型的时,到底是纠结使用 gin 搭建简单的服务,还是使用 go-zero 框架利用其完善的组件的时候, 希望本项目对你有所帮助
以下用户可以考虑使用该项目
go 1.16 以下使用
go get -u github.com/MasterJoyHunan/gengin
go 1.16 及以上使用
go install github.com/MasterJoyHunan/[email protected]
mkdir you-application
cd you-application
go mod init you-app-pkg-name
you-app.api 文件内容示例
syntax = "v1"
info(
title: "some app"
)
type bookRequest {
Name string `json:"name"` // 姓名
Age int `json:"age"` // 年龄
}
type bookResponse {
Code int `json:"code"` // 业务码
Msg string `json:"msg"` // 业务消息
}
@server(
jwt: Auth
group: book
middleware: SomeMiddleware,CorsMiddleware
prefix: /v1
)
service someapp {
@doc "获取所有书本信息"
@handler getBookList
get /book (bookRequest) returns (bookResponse)
@doc "获取书本信息"
@handler getBook
get /book/:id (bookRequest) returns (bookResponse)
@doc "添加书本信息"
@handler addBook
post /book (bookRequest) returns (bookResponse)
@doc "获取书本信息"
@handler editBook
put /book/:id (bookRequest) returns (bookResponse)
}
gengin xxx.api
├─config # 配置文件对应的 struct
├─etc # yaml 配置文件
├─handler # 控制器层
├─internal # 内部处理逻辑
│ ├─response # 统一返回
│ └─translator # 返回错误国际化
├─logic # 服务层
├─middleware # 中间件层
├─routes # 路由定义
├─types # 请求与相应的 struct
you-app.go # main 文件
├─config # 如果文件已存在,不会重新生成
├─etc # 如果文件已存在,不会重新生成
├─handler # 如果文件已存在,不会重新生成
├─internal # 如果文件已存在,不会重新生成
│ ├─response # 如果文件已存在,不会重新生成
│ └─translator # 如果文件已存在,不会重新生成
├─logic # 如果文件已存在,不会重新生成
├─middleware # 如果文件已存在,不会重新生成
├─routes # gengin生成的文件会重新生成,请不要修改。手动新增的文件不会
├─types # gengin生成的文件会重新生成,请不要修改。手动新增的文件不会
you-app.go # 如果文件已存在,不会重新生成
如果需要对 .api 文件生成 swagger 文档,请参考https://github.com/zeromicro/goctl-swagger
如果觉得该项目对你有所帮助,请不要吝啬你的小手,帮忙点个 stars
如果对本项目有更好的建议或意见,欢迎提交 pr / issues,或者联系本人 [email protected]
再次感谢 go-zero