这套代码框架可以作为基础框架使用,是基于yii2框架,结合自己的项目经验增加了一下composer包,并且对代码里面的若干地方做出了一些修改。这些修改可能并不会完全遵从某个范式或者设计原则,更多是个人经验的一些总结。
1、env配置,利用这个可以很好的做好不同环境的配置,测试环境与线上环境的配置肯定会不一样,把配置文件不加入版本管理也是一种解决办法,但是配置文件分布在项目的各个目录下的时候就会很头疼,统一写入.env文件,集中管理是一个很不错的办法,这个在我做的项目中屡试不爽。
2、api 做后端的经常要开发接口,这里使用 deepziyu/yii-fast-api 包
配置 yii2 的模块功能 ,把接口作为一个模块,v0作为版本号,接口开发上线后,是不能做修改的,只能做升级,为了保证同样的接口命名,只是版本不同,就可以利用 版本号来区分。
![](https://img.haomeiwen.com/i727387/9836d54c32dd3fe2.png)
把接口作为模块开发
如需增加接口版本,在配置文件里面的 modules 里面增加对应的版本,比如 'v1' => [
'class' => 'app\modules\v1\Module',
]
其他地方模仿 modules/v0 目录下的文件做修改。
![](https://img.haomeiwen.com/i727387/807695f5f4b188a9.png)
3、接口登陆验证,http请求是无状态的,客户端需要把用户的登陆信息传给服务端做验证,一般是在请求中带上token 或者是传cookie
接口有需要判断用户是否登陆,在 AppAuth,php文件里面做了对应的权限,限制需要在http请求的Header里面 加 X-Token 字段的值。这里也可以根据自己的实际情况修改成 GET或者POST 参数传递token
![](https://img.haomeiwen.com/i727387/58203f3be0074c64.png)
权限
用户验证是在配置文件里面的 user 这个 字段下的配置,找到 common\models\User 这个文件下的loginByAccessToken() 方法。
![](https://img.haomeiwen.com/i727387/e164d027bbcd6c18.png)
4、有的接口需要验证token有的不需要。
Controller 控制器里面有 behaviors方法,里面才执行 权限判断
BaseController里面 没有实现 behaviors方法,需要验证登陆的 继承 Controller控制器,不需要的继承 BaseController
![](https://img.haomeiwen.com/i727387/d27b948207110172.png)
5、请求参数验证,直接在控制器中 rules 方法里面写规则。
![](https://img.haomeiwen.com/i727387/b2fb1b64bd159376.png)
参数验证
对应的代码在BaseController控制器里面的参数绑定的方法里面实现对get post传入的参数做校验
![](https://img.haomeiwen.com/i727387/4ad7e4a9ba34c894.png)
6、写接口文档从来没有如此简单
关于 fastapi 详细的介绍可以看这个链接 http://www.yiichina.com/extension/1161
访问项目的这个路径,就可以直接看到接口文档 index.php?r=route/api/index
有了这个功能,只要再代码里面把相应的注释写清楚就可以自动生成一篇可读性很高的接口文档了,既省了后端开发写文档的时间,又方便了前端同学查看。
![](https://img.haomeiwen.com/i727387/9d4707fa28f3bcb2.png)
自动生成接口文档
总之,技术开发没有银弹,以上也仅仅是个人的经验总结,技术开发的目的都是要省成本,把很多繁琐的工作比如接口文档,通过代码自动生成,节省了开发者宝贵的时间。
2018-10-18 更新
1、使用docker
devops 开发+运维的思想应该深入每个开发者的脑中,三四年前做开发的时候经常会碰到开发环境与生产环境不一致导致程序根本就跑步起来,花大量的时间精力去解决环境的问题,甚至有时候还不得不改代码来兼容环境的不同版本,有了docker 再也没有这样的烦恼了。
2、docker中使用supervisor
supervisor 是python 开发的进程管理工具,在一些业务可能会需要在后台起一个php进程,比如做异步处理,定时检查数据等等
3、通用的后台管理界面
通常会需要一个后台管理来做一些数据的增删改查等等,都是一些通用的,重复的代码。
后台主题用的这个包
composer require "dmstr/yii2-adminlte-asset":"^2.1",
这个链接又详细的用户 https://www.kancloud.cn/curder/yii/247756
![](https://img.haomeiwen.com/i727387/b8c24bf4fb24ca25.png)
adminlte主题
对于常用的 CURD操作用gii自动生成, 利用gii工具提高生产效率,把很多重复的工作都用代码替代了。
![](https://img.haomeiwen.com/i727387/3060920ef26e2147.png)
我的简书https://www.jianshu.com/u/d78ad7080153
我的个人博客http://www.520happy.cn/
我的微信公众号 :创业者hani
![](https://img.haomeiwen.com/i727387/509aa0e63e6ae20c.png)
网友评论