摘要: gin中间件(middleware)提供了类似于面向切面编程或路由拦截器的功能,可以在请求前和请求之后添加一些自定义逻辑。实际开发中有很多场景会用到中间件,例如:权限验证,缓存,错误处理,日志,事务等。 使用中间件 gin的中间件分为三类:全局中间件、路由中间件、分组路由中间件。 全局中间件:注册全 阅读全文
posted @ 2020-11-19 13:38 陈宏博 阅读(720) 评论(0) 推荐(1) 编辑
摘要: Go语言访问mysql数据库需要用到标准库database/sql和mysql的驱动。标准库的Api使用比较繁琐这里再引入另一个库github.com/jmoiron/sqlx。 go get github.com/jmoiron/sqlx go get github.com/go-sql-driv 阅读全文
posted @ 2020-11-13 13:43 陈宏博 阅读(662) 评论(0) 推荐(0) 编辑
摘要: 在前文介绍访问数据库时介绍了github.com/jmoiron/sqlx包,本文基于这个包使用数据库事务。 defer 在使用数据库事务之前,首先需要了解go语言的defer关键字。defer是go语言的延迟执行语句,defer后面的语句会被go进行延迟处理,在函数即将结束的时候,defer后面的 阅读全文
posted @ 2020-11-11 13:43 陈宏博 阅读(1131) 评论(0) 推荐(1) 编辑
摘要: web开发基本都离不开访问数据库,在Gin中使用mysql数据库需要依赖mysql的驱动。直接使用驱动提供的API就要写很多样板代码。你可以找到很多扩展包这里介绍的是jmoiron/sqlx。另外还有一个用来处理空值的包guregu/null。 go get github.com/go-sql-dr 阅读全文
posted @ 2020-11-06 13:44 陈宏博 阅读(1628) 评论(0) 推荐(0) 编辑
摘要: Gin除了模型绑定还提供了模型验证功能。你可以给字段指定特定的规则标签,如果一个字段用binding:"required"标签修饰,在绑定时该字段的值为空,那么将返回一个错误。开发web api的时候大部分参数都是需要验证的,比如email参数要验证是否是邮箱格式、phone参数要验证是否是手机号格 阅读全文
posted @ 2020-11-04 13:48 陈宏博 阅读(790) 评论(0) 推荐(0) 编辑
摘要: 前言 几年前国内一家大型的开发者论坛数据泄露,其中用户密码竟然是以明文方式保存的,很不幸我的常用密码在那时候被泄露了。这件事足以证明我们在保存用户密码的时候是不能用明文保存的。那么问题来了,用什么样的方法加密密码才安全呢?下面介绍一些常见的加密用户密码的算法。 散列函数 HASH 你可能不止一次听到 阅读全文
posted @ 2020-10-30 15:41 陈宏博 阅读(5082) 评论(1) 推荐(1) 编辑
摘要: 在前两篇文章介绍路由的时候,我们了解到gin可用通过类似DefaultQuery或DefaultPostForm等方法获取到前端提交过来的参数。参数不多的情况下也很好用,但是想想看,如果接口有很多个参数的时候再用这种方法就要调用很多次获取参数的方法,本文将介绍一种新的接收参数的方法来解决这个问题:模 阅读全文
posted @ 2020-10-28 11:54 陈宏博 阅读(892) 评论(0) 推荐(0) 编辑
摘要: 在基于gin的golang web开发:路由中我们介绍了Gin的路由和一些获取链接中参数的方法,本文继续介绍其他获取参数的方法。 阅读全文
posted @ 2020-10-25 20:43 陈宏博 阅读(485) 评论(0) 推荐(0) 编辑
摘要: Gin是一个用Golang编写的HTTP网络框架。它的特点是类似于Martini的API,性能更好。在golang web开发领域是一个非常热门的web框架。 阅读全文
posted @ 2020-10-21 13:48 陈宏博 阅读(980) 评论(0) 推荐(0) 编辑
摘要: 背景 最近做一个爬虫相关的项目,需要排除掉一些相似的链接,比如分页控件里上一页,下一页等等没什么用的链接. 编辑距离算法 编辑距离,又称Levenshtein距离(莱文斯坦距离也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数,如果它们的距离越大,说明它们越 阅读全文
posted @ 2018-05-30 14:04 陈宏博 阅读(10500) 评论(0) 推荐(2) 编辑