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

包含以下功能特性:

  1. 允许跨域访问

源码仓库

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

由于文档的粘贴的代码可能会滞后于仓库代码,建议通过下载该仓库代码查看示例。后续章节主要对其中的主要代码做介绍。

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

项目结构

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

在实践中,小伙伴们可以根据实际情况增删目录。

设计模式

GF官方推荐的项目目录结构采用的是MVC设计模式,准确的说是”MVCS“模式。

控制器负责接收并响应客户端的输入与输出,包括对输入参数的过滤、转换、校验,对输出数据结构的维护,并调用service实现业务逻辑处理。

控制器代码位于/app/api

业务逻辑是需要封装的,特别是一些可复用的业务逻辑,并被控制器调用实现业务逻辑处理。

数据模型负责维护所有的数据操作,特别是对数据库的访问控制。数据模型往往是被service调用,不推荐通过控制器直接访问数据模型。

数据模型的代码位于/app/model

模板解析是可选的,在实践中往往可以采用MVVM的模式,例如使用vue/react等框架实现模板解析。如果使用经典的模板解析,可以通过GF框架强大的模板引擎实现模板解析。

模板文件的存放于/template

数据库设计

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

  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. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

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