go

Go + Docker API服务开发和部署 - 测试篇

本文是 Go + Docker API服务开发和部署 文章系列的“测试篇”,主要讲解如何使用Goconvey来进行单元测试、Model测试和API测试。 Goconvey介绍 单元测试 Model测试 API测试 Goconvey介绍 Go内置了“testing”包用来做单元测试和性能测试。Goconvey 核心也是使用“testing”包,但增加了行为测试、丰富的测试断言、WebUI、自动监测更新等功能,有效提升了测试开发效率和体验。 单元测试 先来看看不依赖外部环境的单元测试如何编写,借此了解Goconvey的用法。 单元测试示例: // test/add.go package

  • 天火
    天火
7 min read
go

Go + Docker API服务开发和部署 - 开发篇

本文是 Go + Docker API服务开发和部署 文章系列的开发篇,主要讲解如何使用Go来开发一个适用于生产环境的API服务。 API服务功能介绍 Echo Web框架简介 代码目录结构 MVCS模式介绍 使用Godep来管理依赖 使用Viper来管理配置 使用Cobra来管理子命令 使用Logrus来打印日志 Model层实现 Service层实现 Controller层实现 使用Supervisor来管理服务进程 使用Fswatch来自动部署代码更新 打印完整的请求和响应来辅助调试 API服务功能介绍 本文里我们要实现的API服务功能为几乎每个网站或移动应用都需要的用户系统功能,包括注册、登录、编辑资料和查询信息等接口。数据传输使用HTTP协议,响应结果为JSON格式。 Echo Web框架简介 Echo 是一个Go的Web Server

  • 天火
    天火
24 min read
go

Go + Docker API服务开发和部署 - 开篇

为什么选择Go + Docker 笔者之前的项目开发主要使用Python。Python的优势在于简洁强大的语法,丰富的库包,以及极高的开发效率,而劣势在于通过解释器执行使得性能不够理想,缺少类型检查导致代码质量难以保证,全局锁的存在限制了并发性能,此外缺乏对并发编程的良好支持。这些劣势正好是Go的优势。虽然在开发效率上Go跟Python还有差距,但相比于其它静态类型语言,Go已经有很大提升了。 此外,笔者之前的项目部署主要使用virtualenv(Python 2)和pyvenv(Python 3)来创建独立的应用环境,Supervisor来管理应用进程,Fabric来编写自动化发布脚本。部署应用一键完成,已经能较好满足大多数项目的部署需求。不过不太满意的是,每次新增服务器都要重复进行配置系统,安装软件,优化系统参数等工作,如果要迁移到其它机房或云服务则会更麻烦。问题的根源在于,这种部署方式仅仅把应用依赖的语言库包跟应用一起打了包,

  • 天火
    天火
3 min read