要在Laravel项目中快速部署可交互的Swagger API文档界面,必须安装适配版本的l5-swagger包(如Laravel 12/13用^9.0),发布配置与视图资源,配置扫描路径和API元信息,启用自动生成功能,并在控制器方法上添加标准@OA注解,最后执行生成命令并访问/api/documentation验证。

要在Laravel项目中快速部署可交互的Swagger API文档界面,必须绕过手动维护静态文档的低效方式,直接利用OpenAPI规范驱动的自动化生成能力,确保每次代码更新后文档即时同步。
安装L5-Swagger并发布基础资源
在项目根目录执行命令安装适配当前Laravel版本的包:composer require "darkaonline/l5-swagger:^9.0"。Laravel 12/13需严格匹配^9.0,用^8.0会导致config_path()调用失败。
运行命令发布配置文件:php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider" --tag=config。这会生成config/l5-swagger.php,是后续所有路径与行为控制的源头。
再执行命令发布UI视图与静态资源:php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider" --tag=views。此步将Swagger UI所需CSS、JS注入resources/views/vendor/l5-swagger,缺则页面空白。
配置扫描路径与基础元信息
打开config/l5-swagger.php,定位到'default' => [...]配置组。
修改info字段填入项目真实信息:'title' => '订单中心API', 'version' => 'v2.1', 'description' => '含支付回调、退款核验等核心接口'。标题和版本号会直接显示在UI顶部,写错会导致前端误判接口兼容性。
检查paths下的apis数组,确保包含实际控制器路径:["app/Http/Controllers/Api/**/*.php", "app/Http/Controllers/V1/**/*.php"]。若控制器分散在Modules/User/Http/Controllers这类非标准路径,【必须显式添加对应glob模式】,否则php artisan l5-swagger:generate完全不扫描这些文件。
将generate_always设为true(开发环境),这样每次访问文档页都会自动重解析注解。生产环境务必改回false并配合CI流程手动触发生成,避免每次请求都执行耗时扫描。
编写首个OpenAPI注解并验证生成
在任意控制器方法上方添加最简可用注解:
/*** @OA\Get(* path="/api/health",* summary="服务健康检查",* @OA\Response(response="200", description="返回ok")*/
注意:注解必须以@OA\开头(不是@SWG\),且紧贴方法声明,中间不能有空行——空行会导致L5-Swagger跳过整段解析。
执行生成命令:php artisan l5-swagger:generate。成功时终端输出Docs generated successfully,并在storage/api-docs下生成api-docs.json。
启动本地服务:php artisan serve,访问http://127.0.0.1:8000/api/documentation。页面加载后左侧应出现GET /api/health条目,点击“Try it out”→“Execute”能收到{"message":"ok"}响应。


















