Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tmnhs/common-test
common包的示例用法,简单快速的搭建一个web后端服务
https://github.com/tmnhs/common-test
gin go gorm template viper web zap
Last synced: 3 months ago
JSON representation
common包的示例用法,简单快速的搭建一个web后端服务
- Host: GitHub
- URL: https://github.com/tmnhs/common-test
- Owner: tmnhs
- License: mit
- Created: 2022-11-02T04:12:15.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-03-23T11:01:00.000Z (10 months ago)
- Last Synced: 2024-03-23T12:38:37.868Z (10 months ago)
- Topics: gin, go, gorm, template, viper, web, zap
- Language: Go
- Homepage:
- Size: 64.5 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# common-test
> common包的示例用法,使用github.com/tmnhs/common包快速的搭建一个web服务,
## 1. 使用方法
```shell
#克隆项目
git clone https://github.com/tmnhs/common-test.git#编译项目
make#脚本运行项目
#脚本语法:./server.sh {start|stop|restart} {testing|production}
#默认使用testing配置文件
./server.sh restart
```运行成功后可以访问浏览器http://localhost:8089/ping
若得到”pong“,则说明服务启动成功,之后便可以进行**二次开发**了
## 2. 二次开发
### 2.1 入口函数
```go
func main() {
//参数为需要启动的服务(etcd/mysql/redis)
//连接成功后可以通过dbclient.GetMysqlDD(),etcdClient.GetEtcd(),redisclient.GetRedis()获取对应的client
//通过logger.GetLogger()获取日志处理器
//通过common.GetConfigModels()获取配置文件的信息
srv, err := server.NewApiServer(server.WithEtcd(),server.WithMysql(),server.WithRedis())
if err != nil {
logger.GetLogger().Error(fmt.Sprintf("new api server error:%s", err.Error()))
os.Exit(1)
}
// 注册路由
srv.RegisterRouters(handler.RegisterRouters)// 建表,当然,如果不需要可以直接注释掉
err = service.RegisterTables(dbclient.GetMysqlDB())
if err != nil {
logger.GetLogger().Error(fmt.Sprintf("init db table error:%#v", err))
}
err = srv.ListenAndServe()
if err != nil {
logger.GetLogger().Error(fmt.Sprintf("startup api server error:%v", err.Error()))
os.Exit(1)
}
os.Exit(0)
}```
### 2.2目录结构
| 目录 | 说明 |
| ----------- | ----------- |
| cmd | 入口函数 |
| conf | 配置文件目录 |
| internal | 业务逻辑目录 |
| haddler | 路由处理 |
| middlerware | 中间件 |
| model | 结构体(请求/数据库) |
| service | 一些业务逻辑服务 |## 3. 可能出现的问题
如果引入包并且go mod tidy 出现以下错误时
```go
go: finding module for package google.golang.org/grpc/naming
github.com/tmnhs/common-test/cmd imports
github.com/tmnhs/common/server imports
github.com/tmnhs/common/etcdclient imports
github.com/coreos/etcd/clientv3 tested by
github.com/coreos/etcd/clientv3.test imports
github.com/coreos/etcd/integration imports
github.com/coreos/etcd/proxy/grpcproxy imports
google.golang.org/grpc/naming: module google.golang.org/grpc@latest found (v1.50.1), but does not contain package google.golang.org/grpc/naming
```可以在go.mod中添加以下一行(这个报错和etcd连接的第三方库有版本冲突)
```
replace google.golang.org/grpc => google.golang.org/grpc v1.26.0
```
## 4. 其他功能
如果你需要添加或删除其他的功能,建议将common克隆到你的项目里自行修改,然后
```
replace github.com/tmnhs/common => ../common
```## 5. 交流讨论
如有问题欢迎加qq:1685290935一起交流讨论