{"id":17645374,"url":"https://github.com/tmnhs/common-test","last_synced_at":"2025-05-07T05:05:11.258Z","repository":{"id":62600615,"uuid":"560701329","full_name":"tmnhs/common-test","owner":"tmnhs","description":"common包的示例用法，简单快速的搭建一个web后端服务","archived":false,"fork":false,"pushed_at":"2024-03-23T11:01:00.000Z","size":66,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-07T05:04:57.107Z","etag":null,"topics":["gin","go","gorm","template","viper","web","zap"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tmnhs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-02T04:12:15.000Z","updated_at":"2024-09-30T12:41:06.000Z","dependencies_parsed_at":"2024-10-23T13:59:05.733Z","dependency_job_id":null,"html_url":"https://github.com/tmnhs/common-test","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmnhs%2Fcommon-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmnhs%2Fcommon-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmnhs%2Fcommon-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tmnhs%2Fcommon-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tmnhs","download_url":"https://codeload.github.com/tmnhs/common-test/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252817010,"owners_count":21808705,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gin","go","gorm","template","viper","web","zap"],"created_at":"2024-10-23T10:55:39.604Z","updated_at":"2025-05-07T05:05:11.241Z","avatar_url":"https://github.com/tmnhs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# common-test\n\u003cdiv align=center\u003e\n\u003cimg src=\"https://img.shields.io/badge/golang-1.16.5-blue\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/gin-1.8.1-lightBlue\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/gorm-1.23.10-red\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/etcd-3.5-red\"/\u003e\n\u003c/div\u003e\n\n\u003e common包的示例用法，使用github.com/tmnhs/common包快速的搭建一个web服务，\n\n## 1. 使用方法\n\n```shell\n#克隆项目\ngit clone https://github.com/tmnhs/common-test.git\n\n#编译项目\nmake\n\n#脚本运行项目\n#脚本语法：./server.sh {start|stop|restart} {testing|production} \n#默认使用testing配置文件\n./server.sh restart \n```\n\n运行成功后可以访问浏览器http://localhost:8089/ping\n\n若得到”pong“,则说明服务启动成功,之后便可以进行**二次开发**了\n\n\n\n## 2. 二次开发\n\n### 2.1 入口函数\n\n```go\nfunc main() {\n    //参数为需要启动的服务(etcd/mysql/redis) \n    //连接成功后可以通过dbclient.GetMysqlDD(),etcdClient.GetEtcd(),redisclient.GetRedis()获取对应的client\n    //通过logger.GetLogger()获取日志处理器\n    //通过common.GetConfigModels()获取配置文件的信息\n\tsrv, err := server.NewApiServer(server.WithEtcd(),server.WithMysql(),server.WithRedis())\n\tif err != nil {\n\t\tlogger.GetLogger().Error(fmt.Sprintf(\"new api server error:%s\", err.Error()))\n\t\tos.Exit(1)\n\t}\n\t// 注册路由\n\tsrv.RegisterRouters(handler.RegisterRouters)\n\n\t// 建表，当然，如果不需要可以直接注释掉\n\terr = service.RegisterTables(dbclient.GetMysqlDB())\n\tif err != nil {\n\t\tlogger.GetLogger().Error(fmt.Sprintf(\"init db table error:%#v\", err))\n\t}\n\terr = srv.ListenAndServe()\n\tif err != nil {\n\t\tlogger.GetLogger().Error(fmt.Sprintf(\"startup api server error:%v\", err.Error()))\n\t\tos.Exit(1)\n\t}\n\tos.Exit(0)\n}\n\n```\n\n### 2.2目录结构\n\n| 目录          | 说明          |\n| ----------- | ----------- |\n| cmd         | 入口函数        |\n| conf        | 配置文件目录      |\n| internal    | 业务逻辑目录      |\n| haddler     | 路由处理        |\n| middlerware | 中间件         |\n| model       | 结构体（请求/数据库） |\n| service     | 一些业务逻辑服务    |\n\n\n## 3. 可能出现的问题\n\n如果引入包并且go mod tidy 出现以下错误时\n\n```go\ngo: finding module for package google.golang.org/grpc/naming\ngithub.com/tmnhs/common-test/cmd imports\n        github.com/tmnhs/common/server imports\n        github.com/tmnhs/common/etcdclient imports\n        github.com/coreos/etcd/clientv3 tested by\n        github.com/coreos/etcd/clientv3.test imports\n        github.com/coreos/etcd/integration imports\n        github.com/coreos/etcd/proxy/grpcproxy imports\n        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\n```\n\n可以在go.mod中添加以下一行（这个报错和etcd连接的第三方库有版本冲突）\n\n```\nreplace google.golang.org/grpc =\u003e google.golang.org/grpc v1.26.0\n```\n## 4. 其他功能\n如果你需要添加或删除其他的功能，建议将common克隆到你的项目里自行修改，然后\n```\nreplace github.com/tmnhs/common =\u003e ../common\n```\n\n## 5. 交流讨论\n\n如有问题欢迎加qq:1685290935一起交流讨论","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmnhs%2Fcommon-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftmnhs%2Fcommon-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmnhs%2Fcommon-test/lists"}