- 用户注册
- 用户登录
- 用户注销
- 登录状态判断
- 账号/昵称唯一性校验
包含以下功能特性:
- 允许跨域访问
源码仓库
该示例项目的源代码仓库位于: 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
。
数据库设计
我们创建一个简单的用户表。
CREATE TABLE `user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`passport` varchar(45) NOT NULL COMMENT '账号',
`password` varchar(45) NOT NULL COMMENT '密码',
`nickname` varchar(45) NOT NULL COMMENT '昵称',
`create_time` timestamp NOT NULL COMMENT '创建时间/注册时间',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
为简化示例项目的接口实现复杂度,这里的没有做任何加密处理,明文存放密码数据。