29926cf3ea5b673e6dbfac775c382073c0daae93.svn-base 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. # KPTYUN
  2. 一个go api 后端例子,包含JWT,RBAC(Casbin),增删改查, 一键生成 Restful API接口(不依赖orm)。
  3. ## 主要说明
  4. * v1.1.2
  5. ### 表
  6. * user
  7. * username password
  8. * role
  9. * name
  10. * menu
  11. * name path method
  12. ### 目录结构
  13. * conf:用于存储配置文件
  14. * docs: 文档(SQL和API注释)
  15. * logs: 日志
  16. * middleware:应用中间件
  17. * models:应用数据库模型
  18. * pkg:第三方包
  19. * routers: 路由逻辑处理
  20. * service: 逻辑处理
  21. * test: 单元测试
  22. ### 权限验证说明
  23. > 利用的casbin库, 将 user role menu 进行自动关联
  24. ```
  25. 项目启动时,会自动加载权限. 如有更改,会删除对应的权限,重新加载.
  26. 用户关联角色
  27. 角色关联菜单
  28. 权限关系为:
  29. 角色(role.name,menu.path,menu.method)
  30. 用户(user.username,role.name)
  31. 例如:
  32. test /api/v1/users GET
  33. zhuhongbin test
  34. 当zhuhongbin GET /api/v1/users 地址的时候,会去检查权限,因为他属于test组,同时组有对应权限,所以本次请求会通过。
  35. 用户 admin 有所有的权限,不进行权限匹配
  36. 登录接口 /auth 不进行验证
  37. ```
  38. ### 请求
  39. > 请求和接收 都是 传递 json 格式 数据
  40. ```
  41. 例如:
  42. 访问 /auth 获取token
  43. {
  44. "username": "admin",
  45. "password": "123456"
  46. }
  47. 访问 /api/v1/users
  48. 请求头设置 Authorization: Token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  49. ```
  50. ## How to run
  51. ### Required
  52. - Mysql
  53. ### Ready
  54. Create a **go database** and import [SQL](docs/sql/go.sql)
  55. 创建一个库,然后导入sql,创建表!
  56. ### Conf
  57. You should modify `conf/app.ini`
  58. ```
  59. [database]
  60. Type = mysql
  61. User = root
  62. Password =
  63. Host = 127.0.0.1:3306
  64. Name = go
  65. TablePrefix = go_
  66. ```
  67. ## Installation
  68. ```
  69. yum install go -y
  70. cd $GOPATH/src/github.com/kptyun/go-admin
  71. go build main.go
  72. go run main.go
  73. ## 热编译,开发时使用
  74. go get github.com/silenceper/gowatch
  75. gowatch
  76. ```
  77. ### Run
  78. ```
  79. Project information and existing API
  80. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
  81. - using env: export GIN_MODE=release
  82. - using code: gin.SetMode(gin.ReleaseMode)
  83. Listening port is 8000
  84. 默认 账户 密码 都为 123456
  85. ```
  86. * 不用orm依赖,直接输入表名字就可以 增删改查
  87. ```
  88. get http://127.0.0.1:8000/api/restful/go_user
  89. get http://127.0.0.1:8000/api/restful/go_user/1
  90. post http://127.0.0.1:8000/api/restful/go_user
  91. 数据格式 json 支持批量
  92. [{
  93. "username":"hequan",
  94. "password":"hequan1",
  95. "created_on": "0",
  96. "modified_on":"0",
  97. "deleted_on":"0"
  98. }]
  99. put http://127.0.0.1:8000/api/restful/go_user/2
  100. 数据格式 json
  101. {
  102. "password":"654321"
  103. }
  104. delete http://127.0.0.1:8000/api/restful/go_user/2
  105. ```
  106. ### API 注释
  107. > http://127.0.0.1:8000/swagger/index.html
  108. ## Features
  109. ```
  110. - RESTful API
  111. - Gorm
  112. - logging
  113. - Jwt-go
  114. - Swagger
  115. - Gin
  116. - Graceful restart or stop (fvbock/endless)
  117. - App configurable
  118. - 一键生成 Restful API接口
  119. ```
  120. ## 其他
  121. ```shell
  122. ##更新注释
  123. swag init
  124. ```