想搞一个(或者已经有了)参数验证+生成文档的整套组件
之前写过一个在 easyswoole 里内置文档的东西,在公司的 easyswoole 项目里用的。
实现的效果就是在控制器方法上使用注释来标记参数,在 onRequest 时用反射类读取注释,验证参数,再正常进业务层。
/**
* @Apiname 列表
*
* @Param type {"type": "int", "desc": "类型"}
* @Param order_by {"type": "string", "desc": "排序方式"}
* @Param page {"type": "int", "default": "1", "desc": "第几页"}
* @Param limit {"type": "int", "default": "20", "desc": "每页几个"}
*
* @Apidesc 一个列表接口
*
*/
然后是生成文档的部分。使用读取文件和字符串处理的方式,获取到整个路由表。再根据路由对应的控制器和方法,找对应的注释,根据注释里的内容生成文档。最后生成的效果是这样的:

接下来的事情,想要生成一个链接,对接 yapi 或 postman。这样就完成了写路由的同时自动生成接口文档。
这一整套的事情想要整合成一个库(或者是已经有了),库的主要功能是路由,然后自动生成文档。文档可以有几种形式,在线查看、对接swagger(生成个链接)、对接 postman (生成json)。
关于 LearnKu
有时候想,这个写在控制器的方法好还是写在路由的注释上
@yangjisen 更倾向于写在控制器方法上。这个注释描述的是接口的功能和参数,这是符合控制器属性的。路由文件里除了路由本身的内容以外就不应该更多写别的信息了,更多的让路由更像一个「表」。
laravel 的包 github.com/knuckleswtf/scribe 可以参考一下。
github.com/telstatic/thresh 欢迎PR :smile:
type 和 desc 可以用原本的,剩下的再扩充