xinliangnote

xinliangnote

程序员的打怪升级之路。

Member Since 2 years ago

China Beijing

Experience Points
423
follower
Lessons Completed
5
follow
Lessons Completed
62
stars
Best Reply Awards
9
repos

102 contributions in the last year

Pinned
⚡ 基于 Gin 进行模块化设计的 API 框架,封装了常用功能,使用简单,致力于进行快速的业务研发。比如,支持 cors 跨域、jwt 签名验证、zap 日志收集、panic 异常捕获、trace 链路追踪、prometheus 监控指标、swagger 文档生成、viper 配置文件解析、gorm 数据库组件、gormgen 代码生成工具、graphql 查询语言、errno 统一定义错误码、gRPC 的使用、cron 定时任务 等等。
⚡ 【Go 从入门到实战】学习笔记,从零开始学 Go、Gin 框架,基本语法包括 26 个Demo,Gin 框架包括:Gin 自定义路由配置、Gin 使用 Logrus 进行日志记录、Gin 数据绑定和验证、Gin 自定义错误处理、Go gRPC Hello World... 持续更新中...
⚡ 【Swoole 从入门到实战】学习笔记,从零开始学 Swoole,包括 Swoole Task,Swoole WebSocket,Swoole HTTP 服务,Swoole RPC 服务,Swoole MySQL 连接池,Swoole Redis 连接池,Swoole 压测等,其中 7 个源码分享,11 篇总结文章分享。
⚡ go jaeger 链路追踪,实现了5个服务调用的链路,支持 gRPC 和 HTTP。
⚡ PHP 文章集锦,浮点数搞定度运算、签名验证、单点登录、安全防御、缓存技术、RPC、Composer ...
⚡ Go 工具包,包含常用方法:aes,base64,json,mail,math,md5,rsa,time,uuid,validator...
Activity
Nov
28
20 hours ago
Activity icon
issue

xinliangnote issue xinliangnote/go-gin-api

xinliangnote
xinliangnote

关于middleware的项目位置

middleware 应该算 handler

Activity icon
issue

xinliangnote issue comment xinliangnote/go-gin-api

xinliangnote
xinliangnote

关于middleware的项目位置

middleware 应该算 handler

xinliangnote
xinliangnote

middleware 应该算 handler

已调整为拦截器,文件夹名 interceptor

push

xinliangnote push xinliangnote/go-gin-api

xinliangnote
xinliangnote

feature(1.2.8): swagger 接口文档新增 Security

  • 将 middleware 命名为 interceptor
  • 将 deploy 命名为 deployments
  • 移除 pkg/errno
  • 使用 proposal 目录
  • 优化代码

commit sha: 4c37a7e6b571b29b91c59a129c52cea8e899e7a2

push time in 14 hours ago
Nov
21
1 week ago
push

xinliangnote push xinliangnote/go-gin-api

xinliangnote
xinliangnote

feature(1.2.8): 调整 internal 目录结构

xinliangnote
xinliangnote

feature(1.2.8): 调整 internal 目录结构

  • 格式化代码

commit sha: 4e3c2afafdff5ae26571c74ea48fa48cf239c4dc

push time in 1 week ago
Nov
20
1 week ago
push

xinliangnote push xinliangnote/go-gin-api

xinliangnote
xinliangnote

feature(1.2.8): 优化代码

  • 删除 third_party_request

commit sha: 498033753e37505f2bada72d27afbae5b25fdbeb

push time in 1 week ago
push

xinliangnote push xinliangnote/go-gin-api

xinliangnote
xinliangnote

feature(1.2.8): 优化代码

  • cron 相关
  • socket 相关

commit sha: b05ed0b59d27d17010a8721f2ed9fa0dd5e89404

push time in 1 week ago
Activity icon
issue

xinliangnote issue xinliangnote/go-gin-api

xinliangnote
xinliangnote

建议支持多种数据库:例如Postgresql和Oracle

以下基于commit:9aa0067e07d036b4ae57168d2bd138d142dff80e 建议使用gorm在程序初始化的时候创建表,eg:

type User struct {
	//通过在字段后面的标签说明,定义golang字段和表字段的关系
	//例如 `gorm:"column:username"` 标签说明含义是: Mysql表的列名(字段名)为username
	//这里golang定义的Username变量和MYSQL表字段username一样,他们的名字可以不一样。
	Id int64 `gorm:"column:username;not null;type:int(4) primary key auto_increment;comment:'用户名'"`
	Password string `gorm:"column:password;type:varchar(30);index:idx_name"`
	//创建时间,时间戳
	CreateTime int64 `gorm:"column:createtime"`
}

同时建议不要在代码中直接写sql eg:internal/api/controller/tool_handler/func_tables.go:48 切换数据库的时候很痛苦 (postgres要在连接的时候指定数据库,Oracle要在连接的时候指定用户) 谢谢

Activity icon
issue

xinliangnote issue comment xinliangnote/go-gin-api

xinliangnote
xinliangnote

建议支持多种数据库:例如Postgresql和Oracle

以下基于commit:9aa0067e07d036b4ae57168d2bd138d142dff80e 建议使用gorm在程序初始化的时候创建表,eg:

type User struct {
	//通过在字段后面的标签说明,定义golang字段和表字段的关系
	//例如 `gorm:"column:username"` 标签说明含义是: Mysql表的列名(字段名)为username
	//这里golang定义的Username变量和MYSQL表字段username一样,他们的名字可以不一样。
	Id int64 `gorm:"column:username;not null;type:int(4) primary key auto_increment;comment:'用户名'"`
	Password string `gorm:"column:password;type:varchar(30);index:idx_name"`
	//创建时间,时间戳
	CreateTime int64 `gorm:"column:createtime"`
}

同时建议不要在代码中直接写sql eg:internal/api/controller/tool_handler/func_tables.go:48 切换数据库的时候很痛苦 (postgres要在连接的时候指定数据库,Oracle要在连接的时候指定用户) 谢谢

xinliangnote
xinliangnote

以下基于commit:9aa0067e07d036b4ae57168d2bd138d142dff80e 建议使用gorm在程序初始化的时候创建表,eg:

type User struct {
	//通过在字段后面的标签说明,定义golang字段和表字段的关系
	//例如 `gorm:"column:username"` 标签说明含义是: Mysql表的列名(字段名)为username
	//这里golang定义的Username变量和MYSQL表字段username一样,他们的名字可以不一样。
	Id int64 `gorm:"column:username;not null;type:int(4) primary key auto_increment;comment:'用户名'"`
	Password string `gorm:"column:password;type:varchar(30);index:idx_name"`
	//创建时间,时间戳
	CreateTime int64 `gorm:"column:createtime"`
}

同时建议不要在代码中直接写sql eg:internal/api/controller/tool_handler/func_tables.go:48 切换数据库的时候很痛苦 (postgres要在连接的时候指定数据库,Oracle要在连接的时候指定用户) 谢谢

sorry,目前还不支持,主要是因为作者不会。

Activity icon
issue

xinliangnote issue xinliangnote/go-gin-api

xinliangnote
xinliangnote

panic时发送的邮件模板多了一个}

问题:panic时发送的邮件模板多了一个}, 文件位置:internal/pkg/notify/templates/panic-mail.go image

Activity icon
issue

xinliangnote issue comment xinliangnote/go-gin-api

xinliangnote
xinliangnote

panic时发送的邮件模板多了一个}

问题:panic时发送的邮件模板多了一个}, 文件位置:internal/pkg/notify/templates/panic-mail.go image

xinliangnote
xinliangnote

问题:panic时发送的邮件模板多了一个}, 文件位置:internal/pkg/notify/templates/panic-mail.go image

收到,已修改完毕。

Activity icon
issue

xinliangnote issue xinliangnote/go-gin-api

xinliangnote
xinliangnote

少了个跨域中间件吧

在login页面调用/api/login接口直接跨域了

package middleware

import (
	"collectlogs/internal/pkg/core"
)

type HandlerFunc func()

// 处理跨域请求,支持options访问
func (m *middleware) Cors() core.HandlerFunc {
	return func(c core.Context) {
		c.SetHeader("Access-Control-Allow-Origin", "*")
		c.SetHeader("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, Authorization, Token,X-Token,X-User-Id")
		c.SetHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS,DELETE,PUT")
		c.SetHeader("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type")
		c.SetHeader("Access-Control-Allow-Credentials", "true")

		return
	}
}

还有一个问题就是放在路由下的中间件,我不写调用方法都直接被调用了.感觉这样不太好.

Activity icon
issue

xinliangnote issue comment xinliangnote/go-gin-api

xinliangnote
xinliangnote

少了个跨域中间件吧

在login页面调用/api/login接口直接跨域了

package middleware

import (
	"collectlogs/internal/pkg/core"
)

type HandlerFunc func()

// 处理跨域请求,支持options访问
func (m *middleware) Cors() core.HandlerFunc {
	return func(c core.Context) {
		c.SetHeader("Access-Control-Allow-Origin", "*")
		c.SetHeader("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, Authorization, Token,X-Token,X-User-Id")
		c.SetHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS,DELETE,PUT")
		c.SetHeader("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type")
		c.SetHeader("Access-Control-Allow-Credentials", "true")

		return
	}
}

还有一个问题就是放在路由下的中间件,我不写调用方法都直接被调用了.感觉这样不太好.

xinliangnote
xinliangnote

在login页面调用/api/login接口直接跨域了

package middleware

import (
	"collectlogs/internal/pkg/core"
)

type HandlerFunc func()

// 处理跨域请求,支持options访问
func (m *middleware) Cors() core.HandlerFunc {
	return func(c core.Context) {
		c.SetHeader("Access-Control-Allow-Origin", "*")
		c.SetHeader("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, Authorization, Token,X-Token,X-User-Id")
		c.SetHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS,DELETE,PUT")
		c.SetHeader("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type")
		c.SetHeader("Access-Control-Allow-Credentials", "true")

		return
	}
}

还有一个问题就是放在路由下的中间件,我不写调用方法都直接被调用了.感觉这样不太好.

目前是支持跨域的,详见:https://www.yuque.com/xinliangnote/go-gin-api/lcvpix

Activity icon
issue

xinliangnote issue xinliangnote/go-gin-api

xinliangnote
xinliangnote

log建议做成成按天分

log建议做成成按天分

Activity icon
issue

xinliangnote issue comment xinliangnote/go-gin-api

xinliangnote
xinliangnote

log建议做成成按天分

log建议做成成按天分

xinliangnote
xinliangnote

log建议做成成按天分

支持日志切割,按天分割,可以自己去扩展,目前已集成 lumberjack 组件:

Filename:   file, // 文件路径
MaxSize:    128,  // 单个文件最大尺寸,默认单位 M
MaxBackups: 300,  // 最多保留 300 个备份
MaxAge:     30,   // 最大时间,默认单位 day
LocalTime:  true, // 使用本地时间
Compress:   true, // 是否压缩 disabled by default

文档:https://www.yuque.com/xinliangnote/go-gin-api/ph36vg

push

xinliangnote push xinliangnote/go-gin-api

xinliangnote
xinliangnote

feature(1.2.8): 使用 embed 打包静态资源

  • go version 升级为 1.16
  • 使用 embed 特性,将静态资源打包进二进制文件
  • 优化代码

commit sha: 8ed27cdce14b2e128500dd96d7f448f6ab4355b7

push time in 1 week ago
Nov
13
2 weeks ago
push

xinliangnote push xinliangnote/Go

xinliangnote
xinliangnote
xinliangnote
xinliangnote

Merge remote-tracking branch 'origin/master'

Conflicts:

README.md

commit sha: ce4963211854a0ee8cee31587145fba93ed725ac

push time in 2 weeks ago
push

xinliangnote push xinliangnote/go-gin-api

xinliangnote
xinliangnote

perf(时区): 默认设置为中国时区

commit sha: 9aa0067e07d036b4ae57168d2bd138d142dff80e

push time in 2 weeks ago
Nov
11
2 weeks ago
Activity icon
issue

xinliangnote issue comment xinliangnote/go-gin-api

xinliangnote
xinliangnote

go-gin-api 使用的 orm crud 代码生成工具 https://github.com/MohamedBassem/gormgen 停止维护很久了

如题所示,go-gin-api 使用的 orm crud 代码生成工具 gormgen 最近一次更新还是五年之前。。。。。。手动狗头.gif,这是不是得找个替代了

xinliangnote
xinliangnote

代码生成器用不了

看看这个:https://github.com/xinliangnote/go-gin-api/issues/60 能帮到你吗?

Nov
10
2 weeks ago
Activity icon
issue

xinliangnote issue comment xinliangnote/go-gin-api

xinliangnote
xinliangnote

关于middleware的项目位置

middleware 应该算 handler

xinliangnote
xinliangnote

middleware 应该算 handler

有什么建议吗?例如:文件夹挪到什么位置或修改为什么名字?

Activity icon
issue

xinliangnote issue xinliangnote/go-gin-api

xinliangnote
xinliangnote

configs 对于init方法的使用

config 显式初始化是不是更好些

Activity icon
issue

xinliangnote issue comment xinliangnote/go-gin-api

xinliangnote
xinliangnote

errno 包 名起的我有点懵

xinliangnote
xinliangnote

No description provided.

囧,你这么一说,我越来越发现这个名字 懵 了。

Activity icon
issue

xinliangnote issue comment xinliangnote/go-gin-api

xinliangnote
xinliangnote

确实很好,结构很完整,分层合理,中规模公司也适合;自动生成代码那里 能加强就更好了 ,还有参数验证,引入validate

xinliangnote
xinliangnote

No description provided.

可以使用 validator,使用的是 github.com/go-playground/validator/v10,在结构体中使用 binding 标签即可。

Activity icon
issue

xinliangnote issue xinliangnote/go-gin-api

xinliangnote
xinliangnote

确实很好,结构很完整,分层合理,中规模公司也适合;自动生成代码那里 能加强就更好了 ,还有参数验证,引入validate

Activity icon
issue

xinliangnote issue xinliangnote/go-gin-api

xinliangnote
xinliangnote

输入账号密码后提示:错误码10104;错误信息:签名信息错误

输入账号密码后提示:错误码10104;错误信息:签名信息错误

Activity icon
issue

xinliangnote issue comment xinliangnote/go-gin-api

xinliangnote
xinliangnote

输入账号密码后提示:错误码10104;错误信息:签名信息错误

输入账号密码后提示:错误码10104;错误信息:签名信息错误

xinliangnote
xinliangnote

你看看时区,默认是国内时区,我把时间调成国内的就可以了 ariallyp ***@2021年10月16日周六 11:13写道: redis 没问题,重启了感觉还是提示签名信息错误 — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#52 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQFOIY2KZTJQIGTBU22LBNLUHEX3ZANCNFSM5EC6NAOA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

赞 ~

Activity icon
issue

xinliangnote issue comment xinliangnote/go-gin-api

xinliangnote
xinliangnote

uploadfile的样例可以参考一下吗,项目里没有找到

xinliangnote
xinliangnote

No description provided.

暂时没有 uploadfile 样例 ~

Activity icon
issue

xinliangnote issue xinliangnote/go-gin-api

xinliangnote
xinliangnote

uploadfile的样例可以参考一下吗,项目里没有找到

Activity icon
issue

xinliangnote issue comment xinliangnote/go-gin-api

xinliangnote
xinliangnote

go-gin-api 使用的 orm crud 代码生成工具 https://github.com/MohamedBassem/gormgen 停止维护很久了

如题所示,go-gin-api 使用的 orm crud 代码生成工具 gormgen 最近一次更新还是五年之前。。。。。。手动狗头.gif,这是不是得找个替代了

xinliangnote
xinliangnote

如题所示,go-gin-api 使用的 orm crud 代码生成工具 gormgen 最近一次更新还是五年之前。。。。。。手动狗头.gif,这是不是得找个替代了

可以使用,你那报什么错误,方便发一下界面截图和日志等,便于我来帮你定位问题,也可以加我微信私聊。

Previous