本“代码库”主要是本人在项目开发过程中,抽取出的一部分常用的、可组件化的代码组成的代码集合。目前刚刚起步,所以还比较凌乱,在今后的工作中,我会不断地对其进行完善。
本“代码库”的来源主要有两部分:
- 自己写的组件:这部分主要是在项目开发过程中,将一些可组件化的功能模块进行单独的封装,以便日后使用,以提高开发效率。
- 扩展网上的开源组件:对于一些自己想要实现的功能,网上有了相应的开源库,但是感觉又不太适合自己的习惯,所以会对其进行一些小的修改。这一部分代码,都会在源代码的开头注明其来源。
- 发送邮件组件支持 TLS 加密传输
配置文件:主要功能是读、写配置文件,数据将以JSON格式存储在硬盘的指定位置,建议只存储一些不重要的、简单的信息。
只读配置文件:这个组件同样是读取配置信息,但是它是只读的。并且可以根据指定的环境信息,获取不同的配置信息。这一点常用到的场景有两个:
- 国际化:有时候,需要对来自不同地域的请求,输出不同的提示语言;
- 读取不同的配置信息:一般情况一下,我们都有开发环境、测试环境和生产环境,如果每次部署的时候,都需要手动修改代码,指定配置文件的信息,那样很麻烦,并且也容易出错。所以我们可以在程序的入口处就将“环境信息”设置好,让程序只读取某个配置文件的信息,并且也可以在代码中灵活切换。
类型转换:API 接口获取到数据后,需要转换为我们需要的类型,但是 golang 提供的方法稍显复杂,所以稍作封装,将数据转换的工作简化。当然,只适用于数值类型。
邮件发送:这个组件集成了 https://github.com/jordan-wright/email 项目,主要简化了接口调用。
网络请求:封装 HTTP 请求,简化操作。
日志:对于服务器端的开发来讲,为了便于调试及发现问题,我们需要将一些关键信息输出到文件以做后期的分析。本组件可以取代golang自带的 fmt.Printxxx 函数,用作输出调试使用。
logs 目前主要有以下几个功能:
- 输出信息分级,在 console 输出信息的时候,会用不同的颜色对信息进行标记。
- 指定输出通道,并且指定该输出通道的输出日志级别。
- 输出信息到 console,取代 fmt.Printxxx。
- 输出信息到文件,将日志信息记录到文件,超过指定大小之后,会自动分隔存储。
- 输出信息到邮件,如果是比较紧急的日志信息,可以设置其发送到指定的邮箱,对于维护还是比较有用的。
时间组件:目前就一个 Timestamp.
常用小工具信息,目前内容还很少,会慢慢增加。
验证组件:对于客户端提交的信息,我们需要验证其格式和有效性,有效性主要通过数据库查询。对于格式的验证我们经常会写很多 if 语句来判断,这样很麻烦,也不专业。Python 的 Django 带有一个功能强大的 Form 验证组件,还有 WTForm 的验证功能也很不错。所以就借鉴这两个组件,用 golang 的方式实现了这个验证组件,因为本人涉及到的工作主要是 API 接口开发,所以并没有提供表单的功能,而只是开发了验证的功能。
具体的使用,请参考测试文件。