• 源码仓库
  • 项目结构
  • 数据库设计

    我们使用gf框架来创建一个简单的API服务项目,该项目实现以下几个示例接口:

    1. 用户注册
    2. 用户登录
    3. 用户注销
    4. 登录状态判断
    5. 账号/昵称唯一性校验

    源码仓库

    该示例项目的源代码仓库位于: https://github.com/gogf/gf-demos

    各位可以通过《开始运行》章节末尾示例的curl命令行方式进行测试,也可以通过/docfile/postman目录的postman配置进行测试。

    项目结构

    推荐的Go业务型项目目录结构如下:

    1. /
    2. ├── app
    3. ├── api
    4. ├── model
    5. └── service
    6. ├── boot
    7. ├── config
    8. ├── docfile
    9. ├── library
    10. ├── public
    11. ├── router
    12. ├── template
    13. ├── vendor
    14. ├── go.mod
    15. └── main.go
    目录/文件名称 说明 描述
    app 业务逻辑层 所有的业务逻辑存放目录。
    - api 业务接口 接收/解析用户输入参数的入口/接口层。
    - model 数据模型 数据管理层,仅用于操作管理数据,如数据库操作。
    - service 逻辑封装 业务逻辑封装层,实现特定的业务需求,可供不同的包调用。
    boot 初始化包 用于项目初始化参数设置。
    config 配置管理 所有的配置文件存放目录。
    docfile 项目文档 DOC项目文档,如: 设计文档、脚本文件等等。
    library 公共库包 公共的功能封装包,往往不包含业务需求实现。
    public 静态目录 仅有该目录下的文件才能对外提供静态服务访问。
    router 路由注册 用于路由统一的注册管理。
    template 模板文件 MVC模板文件存放的目录。
    vendor 第三方包 第三方依赖包存放目录(可选, 未来会被淘汰)。
    go.mod 依赖管理 使用Go Module包管理的依赖描述文件。
    main.go 入口文件 程序入口文件。

    注意:如果需要提供静态服务,那么所有静态文件都需要存放到public目录下,仅有该目录下的静态文件才能被外部直接访问。不推荐将程序运行目录加入到静态服务中。

    数据库设计

    我们创建一个简单的用户表。

    /docfile/sql/create.sql

    1. CREATE TABLE `user` (
    2. `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',
    3. `passport` varchar(45) NOT NULL COMMENT '账号',
    4. `password` varchar(45) NOT NULL COMMENT '密码',
    5. `nickname` varchar(45) NOT NULL COMMENT '昵称',
    6. `create_time` timestamp NOT NULL COMMENT '创建时间/注册时间',
    7. PRIMARY KEY (`id`)
    8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    为简化示例项目的接口实现复杂度,这里的password没有做任何加密处理,明文存放密码数据。