little-bee-client

little-bee-server-logo

Why

为了让大家了解“蜂工厂”项目,这篇博文详细介绍了“蜂工厂”项目的工作原理。

“蜂工厂”的目的什么?

“蜂工厂”为“蜂乐园”平台提供服务,包括:处理并存储“蜂乐园”用户、数据等。

“蜂工厂”为什么选择”Gin”框架?

回答这个问题前,需先回答:为什么选择”Go”搭建服务器?Golang作为21世纪的语言,自从诞生以来,就争论不断。这里不展开对比讨论,只列举Golang的优势:

比较流行的,Go的HTTP服务框架有:“Beego”“Gin”。”Beego”以见长,而”Gin”以见长。

What

“蜂工厂”是什么项目?

“蜂工厂”是“蜂乐园”项目中的基于Gin框架的REST风格服务器,是“蜂乐园”的大脑,用于处理并存储“蜂乐园”用户、数据等。之所以叫“蜂工厂”,是因为它能接收数据,处理并厂出新数据。当前“蜂工厂”REST风格的框架已经搭建完成,包括:利用中间件进行权限检测,数据库操作等。但是,REST API还在开发中,希望以后其可以有更多强大的API供用户使用。

“蜂工厂”是如何工作的?

由于“蜂工厂”是一个后台服务器,并没有友好的UI界面,因此这里用Postman结合“swagger API 文档”,以操作URL: /api/v1/pub/login做演示。

“蜂工厂”是如何实现的?

“蜂工厂”是一个基于“Gin”框架的后台服务器。下面罗列了部分“蜂工厂”涉及的技术。如果您对以项某项内容感兴趣,那么您可以继续往下看。在“How”部分,我们将详细介绍“蜂工厂”是如何实现的。

How

“蜂工厂”项目结构

.
├── Makefile               // 用Makefile管理项目的编译
├── README.md              // 解释文档
├── cmd                    // 程序入口文件夹
|   └── server             // 主程序文件夹
|       └── main.go        // 主程序,每一个Go项目有且只有一个main入口
├── configs                // 用户配置文件夹
|   └── config.toml        // 存储对服务器的所有配置
├── docs                   // 存储服务器的Swagger API文档
├── export                 // 存储服务器输出文件,包括数据信息、log信息等
├── go.mod                 // Go项目包管理文件
├── go.sum                 // Go项目包管理文件
└── internal               // 项目内部源文件(其他项目无法直接调用)
    └── app                // 内部源文件主目录
        ├── app.go         // 内部源文件初始化入口
        ├── auther         // 身份认证模块
        ├── auther.go      // 身份认证模块初始化入口
        ├── config         // 用户配置文件解析模块
        ├── controller     // 控制器模块,用于处理业务逻辑
        ├── controller.go  // 控制器模块初始化入口
        ├── errors         // 服务器错误模块,定义错误信息
        ├── ginhelper      // gin框架utilities
        ├── logger         // 日志模块
        ├── logger.go      // 日志模块初始化入口
        ├── model          // Model模块,提供接口给控制器存储数据
        ├── model.go       // Model模块初始化入口
        ├── routers        // 路由模块
        |   ├── api        // REST API
        |   ├── middleware // 中间件
        |   ├── routers.go // 初始化REST API和中间件
        |   └── swagger.go // API 文档入口
        ├── routers.go     // 路由初始化入口,并开启HTTP服务
        ├── store          // 数据库模块,提供接口给Model模块和数据库打交道
        └── store.go       // 数据模块初始化入口

“蜂工厂”架构