{"id":25546965,"url":"https://github.com/fishjar/gin-rest-boilerplate","last_synced_at":"2026-02-11T20:30:16.349Z","repository":{"id":92247449,"uuid":"196735090","full_name":"fishjar/gin-rest-boilerplate","owner":"fishjar","description":"gin rest boilerplate","archived":false,"fork":false,"pushed_at":"2020-08-08T06:32:14.000Z","size":228,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-06-20T13:33:08.038Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/fishjar.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":"2019-07-13T15:10:12.000Z","updated_at":"2020-08-07T14:41:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"648fe1f2-21c5-40ff-a882-63822b3d9117","html_url":"https://github.com/fishjar/gin-rest-boilerplate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fishjar%2Fgin-rest-boilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fishjar%2Fgin-rest-boilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fishjar%2Fgin-rest-boilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fishjar%2Fgin-rest-boilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fishjar","download_url":"https://codeload.github.com/fishjar/gin-rest-boilerplate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239808530,"owners_count":19700455,"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":[],"created_at":"2025-02-20T09:19:00.294Z","updated_at":"2026-02-11T20:30:16.298Z","avatar_url":"https://github.com/fishjar.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GIN+GROM 的 REST 项目模板\n\n## 支持特性\n\n- [GIN](https://github.com/gin-gonic/gin)+[GROM](https://github.com/jinzhu/gorm) 开箱即用\n- 简易登录及`JWT`验证、续签\n- 模型中[`validator.v8`](https://godoc.org/gopkg.in/go-playground/validator.v8)数据校验\n\n## 缺陷（待改进）\n\n- 配置文件未区分开发、测试、生产环境\n- 日志工具未使用协程，且未按级别及日期分开多文件\n- 中间件获取`body`数据流后，又写入`body`中，可能对性能有影响\n- 实例中缺少批量增、删、改的功能\n- 缺少文件上传、下载功能\n\n## 目录结构\n\n```sh\n├── config\n│   └── config.go       #配置文件\n├── db\n│   └── db.go           #数据库实例\n├── handler\n│   ├── foo.go          #示例handler\n│   └── login.go        #登录handler\n├── log                 #日志目录\n│   └── gin.log\n├── main.go             #主程\n├── middleware          #中间件包\n│   ├── bodyLogger.go   #日志中间件\n│   └── jwtAuth.go      #JWT验证中间件\n├── model\n│   ├── base.go         #共用model\n│   ├── foo.go          #示例model\n│   └── user.go         #用户model\n├── README.md\n├── router              #路由配置\n│   └── router.go\n└── utils               #工具包\n    ├── jwt.go\n    ├── logger.go\n    └── md5.go\n```\n\n## 使用指引\n\n```sh\n# 确保已安装go，及$GOPATH环境变量已配置\ngo version\necho $GOPATH\n\n# 创建并进入目录\nmkdir -p $GOPATH/src/github.com/fishjar/gin-rest-boilerplate \u0026\u0026 cd \"$_\"\n\n# 克隆项目\ngit clone https://github.com/fishjar/gin-rest-boilerplate.git .\n\n# 确认配置文件(尤其数据库相关配置)\nvi config/config.go\nvi db/db.go\n\n# 如有需要，运行下列命令启动一个mysql数据库服务\n# 否则跳过此行\nsudo docker-compose -f db/docker-compose.mysql.yml up -d\n\n# 安装依赖\ngo get\n\n# 启动\ngo run main.go\n\n# 测试：登录\ncurl -X POST http://localhost:4000/login/account \\\n-H \"Content-Type: application/json\" \\\n-d '{\"userName\":\"gabe\",\"userType\":\"admin\",\"password\":\"123456\"}'\n\n# 测试：创建记录，注意替换\u003ctoken\u003e为实际值\ncurl -X POST http://localhost:8000/foos \\\n-H \"Content-Type: application/json\" \\\n-H \"Authorization: Bearer \u003ctoken\u003e\" \\\n-d '{\"name\":\"gabe\",\"good_time\":\"2019-06-06T00:00:00Z\",\"status\":1}'\n\n# 测试：查询记录，注意替换\u003ctoken\u003e为实际值\ncurl http://localhost:8000/foos \\\n-H \"Authorization: Bearer \u003ctoken\u003e\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffishjar%2Fgin-rest-boilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffishjar%2Fgin-rest-boilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffishjar%2Fgin-rest-boilerplate/lists"}