接口文档生成

CabalPHP 支持接口文档自动生成。

编写好相关配置和文档注释后浏览器访问 http://127.0.0.1:9501/__docs 即可查看相关文档,注意检查自己的监听端口和IP。

点击这里访问示例文档

?> 接口文档地址只能在debug环境(cabal.debug配置为true)下访问。

配置

文档相关配置在 conf/cabal.php

  1. // ...
  2. 'document' => [
  3. // 是否启用文档,默认为 true
  4. // 'enabled' => true,
  5. // 使用 知乎的 unpkg cdn,默认为 unpkg.com 没有国内节点,速度较慢。知乎的为国内节点,但是并不是官方公开的源,目前可外链,稳定性未知
  6. 'cdn' => 'unpkg.zhimg.com',
  7. // 文档页面的项目名称
  8. 'name' => 'CabalPHP',
  9. ],
  10. // ...

使用方法

系统会自动根据你的路由配置,解析控制器方法的注释,自动生成生成,文档更新同样需要reload或者restart服务器

如果控制器继承自 Cabal\Core\Base\FilterController 系统会读取接口参数约束配置生成文档(接口参数的“约束”列)。
详情可查看 路由 & 控制器 文档。

以下代码会生成一个像这样的文档

  1. class UserController extends FilterController
  2. {
  3. public function rules()
  4. {
  5. return [
  6. 'get' => [
  7. 'id' => ['required', 'integer'],
  8. // 'email' => ['required', 'email', ['lengthMin', 4]],
  9. ],
  10. ];
  11. }
  12. /**
  13. * 获取用户
  14. * @apiModule 用户
  15. * @apiDescription 获取用户接口
  16. * - 支持换行
  17. * - 支持markdown
  18. * @apiParam string id 用户ID
  19. * @apiSuccess int code 返回码,0表示成功
  20. * @apiSuccess string msg 提示信息
  21. * @apiSuccess object data 提示信息
  22. * @apiSuccess object data.user 用户
  23. * @apiSuccess int data.user.id 用户ID
  24. * @apiSuccess int data.user.username 用户名
  25. * @apiSuccess int data.user.createdAt 创建时间戳
  26. * @apiSuccessExample json 创建成果 {
  27. * "code":0,
  28. * "message":"",
  29. * "data":{
  30. * "user": {
  31. * "id": 1,
  32. * "username": "CabalPHP",
  33. * "createdAt": 1530374400,
  34. * }
  35. * }
  36. * }
  37. * @apiError int code 错误码
  38. * @apiError string msg 错误信息
  39. * @apiErrorExample json Example {
  40. * "code": 1,
  41. * "message": "用户ID不存在"
  42. * }
  43. * @apiErrorExample json Example2 {
  44. * "code": 1,
  45. * "message": "Id 只能是整数"
  46. * }
  47. */
  48. public function get(\Server $server, Request $request, $vars = [])
  49. {
  50. $id = $request->input('id');
  51. if ($id < 10) {
  52. return [
  53. 'code' => 0,
  54. 'message' => '',
  55. 'data' => [
  56. 'user' => [
  57. 'id' => $request->input('id'),
  58. 'username' => 'CabalPHP',
  59. 'createdAt' => 1530374400,
  60. ],
  61. ],
  62. ];
  63. } else {
  64. return [
  65. 'code' => 0,
  66. 'message' => '用户ID不存在',
  67. ];
  68. }
  69. }
  70. }

支持的语法

  1. /**
  2. * 接口名称
  3. * @apiDescription 接口描述
  4. * 可以换行支持markdown
  5. * @apiModule 模块名称
  6. * @apiIgnore 1
  7. * @apiParam 字段类型 字段1 字段说明
  8. * @apiSuccess 字段类型 字段1 字段说明
  9. * @apiSuccess 字段类型 字段2 字段说明
  10. * @apiError 字段类型 字段1 字段说明
  11. * @apiError 字段类型 字段2 字段说明
  12. * @apiSuccessExample 类型 示例名称 示例内容
  13. * @apiErrorExample 类型 示例名称 示例内容
  14. */