rakutentech/laravel-request-docs

从请求规则、控制器和路由自动生成 Laravel 文档

v2.41 2024-09-08 04:40 UTC

README

Laravel Request Docs

为 Laravel 提供无烦恼的自动 API 文档生成器。
Swagger 的替代品。
支持 Open API 3.0.0

尝试最新的 DEMO!

CI Node CI PHP

npm-install-time composer-install-time phpunit-run-time phpunit-coverage

npm-install-time composer-install-time phpunit-run-time phpunit-coverage

快速 在任何 Laravel 项目上安装

无烦恼 自动生成请求规则和参数的 API 文档

分析 内置 SQL 查询时间分析器,响应时间和头部输出。

支持 Postman 和 OpenAPI 3.0.0 导出。

功能

  • 亮暗模式
  • 自动从注入的请求和正则表达式获取规则
  • 自动从 Laravel 路由获取路由
  • 支持 Laravel 日志
  • 支持 SQL 查询和查询时间
  • 支持 HTTP 响应时间和内存消耗
  • 支持授权头部
  • 支持文件上传
  • 支持Eloquents事件
  • 使用 markdown 显示额外文档
  • 保存历史请求
  • 添加筛选器以按方法、控制器、中间件、路由排序、分组和筛选路由
  • 将 Laravel API、路由、规则和文档导出到 Postman 和 OpenAPI 3.0.0

在 Medium 上阅读

无需编写注释即可自动为 Laravel 生成 API 文档。

阅读更多: https://medium.com/web-developer/laravel-automatically-generate-api-documentation-without-annotations-a-swagger-alternative-e0699409a59e

要求

安装

您可以通过 composer 安装此软件包

composer require rakutentech/laravel-request-docs

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag=request-docs-config
php artisan route:cache

# Optional publish assets
# php artisan vendor:publish --tag=request-docs-assets

(可选)将以下中间件添加到您的 API 中,以便捕获 SQL 日志和模型事件。

app/Http/Kernel.php

        'api' => [
            ...
            \Rakutentech\LaravelRequestDocs\LaravelRequestDocsMiddleware::class,
            ... and so on

使用方法

仪表板

在浏览器中的 /request-docs/ 上查看

设计模式

要使此插件正常工作,您需要在控制器内部注入请求类,以遵循设计模式。对于额外的文档,您还可以在控制器方法中使用 markdown。

Design pattern

截图

深色和浅色模式

  • 使用本地存储来保存先前请求和请求头的历史记录。
  • 请求、SQL、响应和事件时间线如下

排序、分组和筛选的设置

额外文档

您可以使用 @lrdrules 方法的 PHPDoc 和控制器方法中编写额外的文档。
这将在仪表板上以 HTML 格式渲染。
在控制器方法上定义的文档附加在 rules 方法上定义的文档之后。
在控制器中使用它的示例

    /**
     * @lrd:start
     * # Hello markdown
     * Free `code` or *text* to write documentation in markdown
     * @lrd:end
     */
    public function index(MyIndexRequest $request): Resource
    {

额外参数

您可以使用 @LRDparam 定义额外参数。
您可以在 rules 方法和控制器方法上的 PHPDoc 中使用 @LRDparam
您还可以使用 @LRDparam 覆盖规则。这意味着当规则在 rules 方法中定义时,您可以使用 @LRDparamrules 方法的 PHPDoc 上覆盖这些规则。您还可以在控制器方法上的 PHPDoc 中使用 @LRDparam 覆盖这些规则。
因此,优先级是 控制器方法 PHPDoc < 规则方法 PHPDoc < 规则方法值

    /**
     * @LRDparam username string|max:32
     * // either space or pipe
     * @LRDparam nickaname string|nullable|max:32
     * // override the default response codes
     * @LRDresponses 200|422
     */
    public function index(MyIndexRequest $request): Resource
    {

响应代码

如果未显式声明响应代码,则所有路由都按请求-docs.php 中定义的 default_responses 配置返回任何响应代码。
然而,在控制器方法上的PHPDoc中使用@LRDresponse 200|422(空格或管道),您能够明确定义服务器可以返回哪些状态码。

配置

请查看request-docs.php配置文件,了解如何自定义您的体验。

测试

./vendor/bin/phpunit

代码风格检查

./vendor/bin/phpcs --standard=phpcs.xml --extensions=php --ignore=tests/migrations config/ src/

修复代码风格问题

./vendor/bin/php-cs-fixer fix src/
./vendor/bin/php-cs-fixer fix config/

星标历史

Star History Chart

变更日志

  • 初始版本
  • v1.9 增加了状态码、响应头、自定义请求头等改进,并修复了用户报告的问题
  • v1.10 显示PHP内存使用情况,修复gzip编码问题
  • v1.12 修复了id的bug,并支持Laravel 9
  • v1.13 支持Laravel 9
  • v1.15 添加了过滤器,并在异常时回退到正则表达式
  • v1.17 不限制为FormRequest
  • v1.18 修复了prism有固定高度的问题。允许文本区域可调整大小。
  • v1.18 更新了UI并推送了单元测试
  • v1.19 将类型错误转换为Exception
  • v1.20 支持开放API 3.0.0 #10
  • v1.21 能够添加自定义参数
  • v1.22 支持布尔值|文件|图片
  • v1.22 支持布尔值|文件|图片
  • v1.23 修复了LRD文档块#76的bug
  • v1.27 在宽度和请求方法上做了一些修复
  • v2.0 UI更新到React Static
    • @QAParam现在为@LRDparam
    • 对用户没有特殊更改,按常规升级到v2.x
    • 升级用户需要重新发布配置
  • v2.1 UI - 添加了搜索栏和表格的一些对齐修复
  • v2.2 添加了PHP 8.1和8.2的支持 - 路由和控制器启用了Groupby
  • v2.3 修复了本地存储(标签页)的bug,并在alpha测试后重构了整个UI
  • v2.4 在导航栏上显示版本,curl使用ace编辑器
  • v2.5 修复了Groupby的最终问题,添加了本地存储清除按钮。其他UI重构
  • v2.6 文件上传
  • v2.7 在Eloquent模型上显示活动
  • v2.8 在Eloquent模型上显示完整活动
  • v2.13 修复了bug,并支持嵌套参数
  • v2.14 添加了对路径参数的支持
  • v2.16 顶部导航栏已固定
  • v2.19 发布_astro资源
  • v2.25 添加了laravel-request-docs:export命令以导出
  • v2.28 允许在请求类的rules方法上定义额外的文档。由@Ken-vdE提供
  • v2.31 自定义标题,vup js和PHP到最新。自定义头。保存响应历史。
  • v2.40 一些bug修复。

贡献者