# beego-api-demo **Repository Path**: robfeng/beego-api-demo ## Basic Information - **Project Name**: beego-api-demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-12-06 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # beego-api-demo A service demo using Beego framework, with MySQL and Redis support. 这是一个基于 [Beego](http://beego.me) 框架构建的应用 demo,后台数据库使用 [MySQL](http://www.mysql.com),并使用 [Redis](http://redis.io) 存储数据。 ## API列表 | 功能 | URL | Mode | |------|:-----|------| | 新增一个用户信息 | /v1/users/register | POST | | 获取认证 | /v1/users/token | POST | | 获取一本图书信息 | /v1/books/:id | GET | | 获取所有图书信息 | /v1/books | GET | | 新增一本图书信息 | /v1/books | POST | | 修改一本图书信息 | /v1/books/:id | PUT | | 删除一本图书信息 | /v1/books/:id | DELETE | 初始建数据库表的脚本位于:scripts/sql/db.sql。 多记录 api,提供如下参数: * query=col1:op1:val1,col2:op2:val2 ... * order=col1:asc|desc,col2:asc|esc ... * limit=n,缺省为 10 * offset=n,缺省为 0 query 的 op 值: * eq,等于 * ne,不等于 * gt,大于 * ge,大于等于 * lt,小于 * le,小于等于 说明: * 参考 RESTful 模式设计 API。 * 使用 [scrypt](https://godoc.org/golang.org/x/crypto/scrypt) 算法进行密码处理。 * 使用 JSON Web Token (JWT) 做认证手段。 * 输入数据采用 json,返回数据也是 json。 * 数据库操作使用原生 SQL,没有采用 ORM。 * 对可能的 NULL 值做了处理。 * 多记录查询通过拼接 SQL 语句实现,故对输入参数做了一些校验和处理。 * 同样单独区分“记录不存在”和“记录重复”两种数据库错误。 * 在GET /v1/books/:id API 使用Redis缓存。 ## API测试 在 test 文件夹中有一份Postman的测试代码 ## 环境 ### 配置文件 更名 conf/app.conf.rename 为 conf/app.conf,默认不上传配置文件。 ### GO语言 包括安装 go,设置 $GOPATH 等,具体可参考:[How to Write Go Code](http://golang.org/doc/code.html)。 ### MySQL 在 conf/app.conf 中设置 MySQL 参数,如: ``` [mysql] url = root:root@/beego-api-demo?charset=utf8&parseTime=True&loc=Local ``` 完整的 url 写法可参考:https://github.com/go-sql-driver/mysql#dsn-data-source-name 这里单独封装了一个 mymysql 包来实现数据库的初始化,以简化后续的数据库操作。 ### Redis 在 conf/app.conf 中设置 Redis 参数,涉及两个地方,一个是 session,一个是 cache,两者可以不同: ``` sessionproviderconfig = 127.0.0.1:6379 [cache] server = 127.0.0.1:6379 password = ``` 这里单独封装了一个 myredis 包来实现数据库的初始化,以简化后续的数据库操作。 Windows 环境可以安装 https://github.com/microsoftarchive/redis ## 运行 编译: ``` $ go build ``` 运行: ``` $ ./beego-api-demo ``` 也可安装 bee 工具,这在调试阶段很好用: ``` $ go get -u github.com/beego/bee ``` 通过bee运行: ``` $ bee run ``` 当前版本: ``` $ bee version ______ | ___ \ | |_/ / ___ ___ | ___ \ / _ \ / _ \ | |_/ /| __/| __/ \____/ \___| \___| v2.0.0 ├── Beego : 2.0.0 ├── GoVersion : go1.15.5 ├── GOOS : windows ├── GOARCH : amd64 ``` 依赖包列表: * github.com/astaxie/beego * github.com/astaxie/beego/session/redis * github.com/dgrijalva/jwt-go * github.com/gomodule/redigo/redis * github.com/go-sql-driver/mysql * github.com/go-playground/validator/v10 * golang.org/x/crypto/scrypt