abc12

date
slug
abc123
status
Published
tags
summary
type
Page
GitHub - wangbjun/gen: 基于Gin的Web框架,集成数据库、日志、配置等开源库,开箱即用
主要使用以下开源组件: 项目目录结构清晰明了,简单易用,快速上手,包含了一个用户注册、登录、文章增删改查等功能的 Restful API 应用,仅供参考! 主要包含以下API: 项目采用了依赖注入的方式贯穿全局,我们可以把DB、缓存、HTTP API等功能看作是项目的一个服务,通过facebook开源的inject库,我们在启动项目把这些 Service 注入进去,解决各自之间的依赖关系。 既灵活,也不影响性能,因为虽然依赖注入使用了反射,但是我们只在程序启动之前做这件事,而且只需要进行一次。 main文件是程序的入口,主要功能是解析命令行参数,只有一个参数,那就是配置文件,默认配置文件是当前目录下的 app.ini 紧接着,创建一个 Server 实例: 这个Server实例是管理所有服务的中心,其主要工作就是加载配置文件,然后根据配置文件初始化日志配置,日志库采用zap log,主要文件在 zap/zap_logger.go 里面 然后还有一个最重要是就是初始化所有注册过服务,执行其 Init 方法做一些初始化工作,最后执行后台服务。 如果一个服务实现了 Run方法,就是一个后台服务,会在项目启动时候运行,结束时候优雅关闭,其中最好的例子就是 HTTPServer ,我们可以把API服务认为是一个后台服务,在整个项目启动的时候就会运行。 HTTPServer的代码在 api/http_server.go 文件里面,其主要作用就是初始化一些服务配置,然后启动HTTP服务,使用了Gin框架。 在 services 文件夹下包含了一些服务的代码文件。 项目整体是一个3层架构,即控制器层、Service层、模型层。 个人理解,控制器层主要做一些接口参数校验等工作,模型层主要是数据操作,Service层才是主要的业务逻辑。 数据库相关配置在 models/db.go 里面,也是一个服务,主要作用是根据配置,初始化数据库连接,支持多数据库配置、支持Sql日志记录。 项目使用了Gorm(2.0版本),具体详细用法可以参考官方文档。 路由文件位于 api/api.go,可以多层嵌套,中间件在 middleware 文件夹。 config/config.go 是配置文件的一些加载逻辑,可以根据自己需求适当的修改优化。 关于接口参数,建议POST、PUT统一使用JSON形式,在模型层里面定义好相应的结构体,参数的校验采用了 go-playground/validator/v10 库,直接在结构体Tag里面标记即可,详细用法请参考其官方文档。 建议直接clone本项目,然后删除多余的控制器、模型等文件,根据自己需求调整即可。 最后的最后,本项目参考借鉴了著名Go开源项目 Grafana 的设计和架构,这个项目的后端是全部采用Go开发,东西也很多,代码很不错。
GitHub - wangbjun/gen: 基于Gin的Web框架,集成数据库、日志、配置等开源库,开箱即用
 
 
 
 
 
前段时间你们撸的免费一年电信星卡咋样了,分享几个IP  自己找自己地方网速快的,
中国 江苏 南京 联通112.80.255.21
中国 广东 广州 电信14.215.177.73
中国 广东 广州 联通163.177.151.162
中国 北京 北京 联通123.125.142.40
中国 江苏 南京 电信180.97.104.45
中国 北京 北京 电信220.181.43.12
 
 
 
 

© KazeKiddo 2021 - 2022