Skip to content

structure base on lumen for api develop, and it's with JWT

License

Notifications You must be signed in to change notification settings

armnerd/structure-lumen

Repository files navigation

分层规范及说明

规范

1.  禁止拼音和数字参和在变量名、函数名及数据库表和字段名中,版本号例外
2.  数据库表及字段名均为小写,单词间下划线区分
3.  变量名和函数名均使用小驼峰命名
4.  文件夹及文件均使用大驼峰命名
5.  除model是表名外,其他层成员命名均有属性后缀,且为单数,如service
6.  层命名均为复数,以表严谨
7.  控制器里不要出现数据操作
8.  服务之间可以互相调用
9.  仓储之间禁止互相调用
10. 需要联表,可以使用模型中的关联关系,或是join
11. 函数调用里不要出现1,2等不明意思的数字,请写在当前层类里,作为常量存在
12. 业务涉及事物操作的,在控制器里捕获异常,做事物的开启和提交,服务和数据层只抛异常
13. 接受请求参数只在控制器层处理,其他层只能用接参赋值后的变量进行参数传递

分层

按处理顺序,至上而下分别为
- 请求层 request
- 控制器 controller
- 服务层 service
- 仓储层 repository
- 模型层 model
具体编写细节见demo中注释
路由中需要鉴权的请加上check中间件
所有分层均有基类,可以根据需要抽取公共的方法

接口版本

在路由里按版本号分组
在控制器里以文件夹划分
用于前端应用需要审核时对旧版本的兼容支持

中间件

在项目/app/Http/Middleware下
LogMiddleware作为所有请求的中间件,会做日志等操作
CheckMiddleware为鉴权所需中间件,根据需要实现
两者在/app/Http/Kernel.php中注册

全局响应trait

文件为/app/Helpers/ApiResponse.php
可以在请求层,控制器层和服务层调用,集成在其中基类里了

错误返回码

返回码配置在/config/error.php文件里

部署

- composer install
- cp .env.example .env
- storage 目录和 bootstrap/cache 目录应该允许 Web 服务器写入
- php artisan jwt:secret 生成jwt秘钥

About

structure base on lumen for api develop, and it's with JWT

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published