{"id":36455155,"url":"https://github.com/yuedun/ginode","last_synced_at":"2026-01-11T23:02:26.265Z","repository":{"id":57505209,"uuid":"196495587","full_name":"yuedun/ginode","owner":"yuedun","description":"gin框架，使用jwt作为接口认证，gorm查询数据","archived":false,"fork":false,"pushed_at":"2023-01-31T06:14:18.000Z","size":133,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-20T15:58:39.434Z","etag":null,"topics":["gin","gin-jwt","gorm","jwt"],"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/yuedun.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}},"created_at":"2019-07-12T02:35:30.000Z","updated_at":"2023-01-30T21:19:57.000Z","dependencies_parsed_at":"2023-02-16T16:45:25.369Z","dependency_job_id":null,"html_url":"https://github.com/yuedun/ginode","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/yuedun/ginode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuedun%2Fginode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuedun%2Fginode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuedun%2Fginode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuedun%2Fginode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuedun","download_url":"https://codeload.github.com/yuedun/ginode/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuedun%2Fginode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28326166,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T22:11:01.104Z","status":"ssl_error","status_checked_at":"2026-01-11T22:10:58.990Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","gin-jwt","gorm","jwt"],"created_at":"2026-01-11T23:02:26.197Z","updated_at":"2026-01-11T23:02:26.257Z","avatar_url":"https://github.com/yuedun.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ginode\n一个和nodejs很像的框架\n\n## 本地开发\n\u003e go run main.go\n\nbeego框架自带了本地调试工具，在修改代码后可以自动重启，幸运的是，`bee`工具同样可以在`gin`项目中使用\n\u003e bee run\n\n但是`bee`不能使用在非`GOPATH`目录下\n\n另外一种使用了`dogo`，本项目包含了dogo.json配置，可根据自己项目路径修改\n\u003e dogo\n\n## 目录结构\n本项目结构组织使用的是按职责划分，采用这种结构的原因是，目前流行的开发模式是微服务架构，但是一般项目都是由小到大再到拆分的过程，如果项目初始就使用微服务的架构开发的话估计还没等项目开发完公司就完蛋了。\n所以最开始还是单体架构才是正确的方式，不过为了以后方便拆分，可以对项目目录进行合理的划分。\n从路由入口看：\n```golang\nfunc RouterRegister(router *gin.Engine) {\n\t//user路由注册\n    \tuserRouter := router.Group(\"/user\")\n    \t{\n    \t\tuserRouter.GET(\"/index\", user.Index)\n    \t\tuserRouter.GET(\"/users/:id\", middleware.Auth(), user.GetUserInfo)\n    \t\tuserRouter.GET(\"/users-by-sql/:id\", user.GetUserInfoBySql)\n    \t\tuserRouter.POST(\"/\", user.CreateUser)\n    \t\tuserRouter.PUT(\"/update/:id\", user.UpdateUser)\n    \t\tuserRouter.DELETE(\"/del/:id\", user.DeleteUser)\n    \t}\n    \t//user路由注册\n    \tpostRouter := router.Group(\"/post\")\n    \t{\n    \t\tpostRouter.GET(\"/\", post.Index)\n    \t\tpostRouter.GET(\"/posts/:id\", middleware.Auth(), post.GetPostInfo)\n    \t\tpostRouter.GET(\"/posts-by-sql/:id\", post.GetPostInfoBySql)\n    \t\tpostRouter.POST(\"/\", post.CreatePost)\n    \t\tpostRouter.PUT(\"/:id\", post.UpdatePost)\n    \t\tpostRouter.DELETE(\"/:id\", post.DeletePost)\n    \t}\n}\n```\n本项目只是一个示例项目，模块较少，只开设了两个模块，`user`和`post`，注册路由的时候就可以按照不同的职责来分组注册，`pkg`目录下放置的就是不同职责的模块。\n将来需要对服务进行拆分的时候只需要将`pkg`目录下的模块分离出去即可形成独立的服务，对依赖的的修改也较少。如果使用的MVC架构的话，要对不同职责的服务进行拆分则很困难，需要对每一层中对应的文件都拿出来重新组织。\n\n### 请求参数绑定\n推荐使用**ShouldBind***，因为**Bind***是必须绑定，所有参数需要一致。\n```shell script\ngolang.org/x/text =\u003e github.com/golang/text latest\n\n golang.org/x/net =\u003e github.com/golang/net latest\n\n golang.org/x/crypto =\u003e github.com/golang/crypto latest\n\n golang.org/x/tools =\u003e github.com/golang/tools latest\n\n golang.org/x/sync =\u003e github.com/golang/sync latest\n\n golang.org/x/sys =\u003e github.com/golang/sys latest\n\n cloud.google.com/go =\u003e github.com/googleapis/google-cloud-go latest\n\n google.golang.org/genproto =\u003e github.com/google/go-genproto latest\n\n golang.org/x/exp =\u003e github.com/golang/exp latest\n\n golang.org/x/time =\u003e github.com/golang/time latest\n\n golang.org/x/oauth2 =\u003e github.com/golang/oauth2 latest\n\n golang.org/x/lint =\u003e github.com/golang/lint latest\n\n google.golang.org/grpc =\u003e github.com/grpc/grpc-go latest\n\n google.golang.org/api =\u003e github.com/googleapis/google-api-go-client latest\n\n google.golang.org/appengine =\u003e github.com/golang/appengine latest\n\n golang.org/x/mobile =\u003e github.com/golang/mobile latest\n\n golang.org/x/image =\u003e github.com/golang/image latest\n \n cloud.google.com/go =\u003e github.com/googleapis/google-cloud-go v0.34.0\n\n github.com/go-tomb/tomb =\u003e gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7\n\n go.opencensus.io =\u003e github.com/census-instrumentation/opencensus-go v0.19.0\n\n go.uber.org/atomic =\u003e github.com/uber-go/atomic v1.3.2\n\n go.uber.org/multierr =\u003e github.com/uber-go/multierr v1.1.0\n\n go.uber.org/zap =\u003e github.com/uber-go/zap v1.9.1\n \n google.golang.org/api =\u003e github.com/googleapis/google-api-go-client v0.0.0-20181220000619-583d854617af\n\n google.golang.org/appengine =\u003e github.com/golang/appengine v1.3.0\n\n google.golang.org/genproto =\u003e github.com/google/go-genproto v0.0.0-20181219182458-5a97ab628bfb\n\n google.golang.org/grpc =\u003e github.com/grpc/grpc-go v1.17.0\n\n gopkg.in/alecthomas/kingpin.v2 =\u003e github.com/alecthomas/kingpin v2.2.6+incompatible\n\n gopkg.in/mgo.v2 =\u003e github.com/go-mgo/mgo v0.0.0-20180705113604-9856a29383ce\n\n gopkg.in/vmihailenco/msgpack.v2 =\u003e github.com/vmihailenco/msgpack v2.9.1+incompatible\n\n gopkg.in/yaml.v2 =\u003e github.com/go-yaml/yaml v0.0.0-20181115110504-51d6538a90f8\n\n labix.org/v2/mgo =\u003e github.com/go-mgo/mgo v0.0.0-20160801194620-b6121c6199b7\n\n launchpad.net/gocheck =\u003e github.com/go-check/check v0.0.0-20180628173108-788fd7840127\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuedun%2Fginode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuedun%2Fginode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuedun%2Fginode/lists"}