|
@@ -0,0 +1,173 @@
|
|
|
+# KPTYUN
|
|
|
+
|
|
|
+一个go api 后端例子,包含JWT,RBAC(Casbin),增删改查, 一键生成 Restful API接口(不依赖orm)。
|
|
|
+
|
|
|
+## 主要说明
|
|
|
+* v1.1.2
|
|
|
+
|
|
|
+### 表
|
|
|
+* user
|
|
|
+ * username password
|
|
|
+* role
|
|
|
+ * name
|
|
|
+* menu
|
|
|
+ * name path method
|
|
|
+
|
|
|
+### 目录结构
|
|
|
+* conf:用于存储配置文件
|
|
|
+* docs: 文档(SQL和API注释)
|
|
|
+* logs: 日志
|
|
|
+* middleware:应用中间件
|
|
|
+* models:应用数据库模型
|
|
|
+* pkg:第三方包
|
|
|
+* routers: 路由逻辑处理
|
|
|
+* service: 逻辑处理
|
|
|
+* test: 单元测试
|
|
|
+
|
|
|
+
|
|
|
+### 权限验证说明
|
|
|
+> 利用的casbin库, 将 user role menu 进行自动关联
|
|
|
+
|
|
|
+```
|
|
|
+项目启动时,会自动加载权限. 如有更改,会删除对应的权限,重新加载.
|
|
|
+
|
|
|
+用户关联角色
|
|
|
+角色关联菜单
|
|
|
+
|
|
|
+权限关系为:
|
|
|
+角色(role.name,menu.path,menu.method)
|
|
|
+用户(user.username,role.name)
|
|
|
+
|
|
|
+例如:
|
|
|
+test /api/v1/users GET
|
|
|
+zhuhongbin test
|
|
|
+
|
|
|
+当zhuhongbin GET /api/v1/users 地址的时候,会去检查权限,因为他属于test组,同时组有对应权限,所以本次请求会通过。
|
|
|
+
|
|
|
+用户 admin 有所有的权限,不进行权限匹配
|
|
|
+
|
|
|
+登录接口 /auth 不进行验证
|
|
|
+```
|
|
|
+
|
|
|
+### 请求
|
|
|
+
|
|
|
+> 请求和接收 都是 传递 json 格式 数据
|
|
|
+```
|
|
|
+例如:
|
|
|
+访问 /auth 获取token
|
|
|
+{
|
|
|
+ "username": "admin",
|
|
|
+ "password": "123456"
|
|
|
+}
|
|
|
+
|
|
|
+访问 /api/v1/users
|
|
|
+请求头设置 Authorization: Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+## How to run
|
|
|
+
|
|
|
+### Required
|
|
|
+
|
|
|
+- Mysql
|
|
|
+
|
|
|
+### Ready
|
|
|
+
|
|
|
+Create a **go database** and import [SQL](docs/sql/go.sql)
|
|
|
+
|
|
|
+创建一个库,然后导入sql,创建表!
|
|
|
+
|
|
|
+### Conf
|
|
|
+
|
|
|
+You should modify `conf/app.ini`
|
|
|
+
|
|
|
+```
|
|
|
+[database]
|
|
|
+Type = mysql
|
|
|
+User = root
|
|
|
+Password =
|
|
|
+Host = 127.0.0.1:3306
|
|
|
+Name = go
|
|
|
+TablePrefix = go_
|
|
|
+```
|
|
|
+
|
|
|
+## Installation
|
|
|
+```
|
|
|
+
|
|
|
+yum install go -y
|
|
|
+
|
|
|
+
|
|
|
+cd $GOPATH/src/github.com/kptyun/go-admin
|
|
|
+go build main.go
|
|
|
+go run main.go
|
|
|
+
|
|
|
+## 热编译,开发时使用
|
|
|
+
|
|
|
+go get github.com/silenceper/gowatch
|
|
|
+
|
|
|
+gowatch
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+### Run
|
|
|
+```
|
|
|
+Project information and existing API
|
|
|
+
|
|
|
+[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
|
|
|
+ - using env: export GIN_MODE=release
|
|
|
+ - using code: gin.SetMode(gin.ReleaseMode)
|
|
|
+
|
|
|
+Listening port is 8000
|
|
|
+
|
|
|
+默认 账户 密码 都为 123456
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+* 不用orm依赖,直接输入表名字就可以 增删改查
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+get http://127.0.0.1:8000/api/restful/go_user
|
|
|
+get http://127.0.0.1:8000/api/restful/go_user/1
|
|
|
+post http://127.0.0.1:8000/api/restful/go_user
|
|
|
+数据格式 json 支持批量
|
|
|
+[{
|
|
|
+ "username":"hequan",
|
|
|
+ "password":"hequan1",
|
|
|
+ "created_on": "0",
|
|
|
+ "modified_on":"0",
|
|
|
+ "deleted_on":"0"
|
|
|
+}]
|
|
|
+put http://127.0.0.1:8000/api/restful/go_user/2
|
|
|
+数据格式 json
|
|
|
+{
|
|
|
+ "password":"654321"
|
|
|
+}
|
|
|
+delete http://127.0.0.1:8000/api/restful/go_user/2
|
|
|
+```
|
|
|
+
|
|
|
+### API 注释
|
|
|
+
|
|
|
+> http://127.0.0.1:8000/swagger/index.html
|
|
|
+
|
|
|
+
|
|
|
+## Features
|
|
|
+```
|
|
|
+- RESTful API
|
|
|
+- Gorm
|
|
|
+- logging
|
|
|
+- Jwt-go
|
|
|
+- Swagger
|
|
|
+- Gin
|
|
|
+- Graceful restart or stop (fvbock/endless)
|
|
|
+- App configurable
|
|
|
+- 一键生成 Restful API接口
|
|
|
+```
|
|
|
+
|
|
|
+## 其他
|
|
|
+```shell
|
|
|
+##更新注释
|
|
|
+swag init
|
|
|
+
|
|
|
+
|
|
|
+```
|