Laravel如何为API生成Swagger或OpenAPI文档
发布时间 - 2025-12-12 00:00:00 点击率:次使用DarkaOnLine/L5-Swagger包通过注解自动生成OpenAPI文档,1. 安装并发布配置文件;2. 配置扫描路径与路由;3. 在控制器中添加@OA注解描述接口;4. 生成文档并访问/api/documentation查看交互式页面;5. 可选自动更新机制保持文档同步。
在Laravel项目中为API生成Swagger(OpenAPI)文档,最常用且高效的方式是使用DarkaOnLine/L5-Swagger包。它基于Swagger PHP注解,能自动生成符合OpenAPI规范的交互式API文档。
1. 安装 L5-Swagger 包
在Laravel项目根目录下运行以下命令安装:
composer require "darkaonline/l5-swagger"安装完成后,发布配置文件:
php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider"这会生成 config/l5-swagger.php 和视图资源文件。
2. 配置 Swagger 文档路径与扫描
打开 config/l5-swagger.php,确认以下关键配置项:
-
routes.api:访问文档的路由,如 /api/document
ation - paths.docs:文档存储路径,默认为 storage/api-docs/
- paths.annotations:注解扫描路径,通常设为 ./app/Http/Controllers
确保扫描路径包含你写注解的控制器或API类。
3. 在控制器中编写 OpenAPI 注解
使用PHP注解为API接口添加描述。例如:
/** * @OA\Get( * path="/api/users", * tags={"Users"}, * summary="获取用户列表", * @OA\Response( * response=200, * description="成功返回用户列表", * @OA\JsonContent(type="array", @OA\Items(ref="#/components/schemas/User")) * ) * ) */ public function index() { return User::all(); }支持的注解包括:@OA\Info、@OA\PathItem、@OA\Schema 等,完整语法参考 Swagger-PHP 官方文档。
4. 生成和查看文档
运行以下命令生成JSON格式的OpenAPI文档:
php artisan l5-swagger:generate启动Laravel服务后,访问:
http://your-app.test/api/documentation即可查看由Swagger UI渲染的交互式API文档页面。
5. (可选)自动更新文档
开发阶段可在 AppServiceProvider 或使用监听器,在代码变更时自动重新生成文档,或在CI流程中加入生成命令。
基本上就这些。只要写好注解并正确配置,L5-Swagger就能帮你维护一份实时、可视化的API文档。
# php
# laravel
# js
# json
# composer
# app
# 路由
# 配置文件
# Array
# require
# 接口
# public
# 并发
# function
# http
# ui
# 文档
# 可选
# 自动生成
# 用户列表
# 自动更新
# 器中
# 就能
# 设为
# 帮你
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Python高阶函数应用_函数作为参数说明【指导】
Laravel Docker环境搭建教程_Laravel Sail使用指南
如何利用DOS批处理实现定时关机操作详解
javascript中闭包概念与用法深入理解
Internet Explorer官网直接进入 IE浏览器在线体验版网址
Android滚轮选择时间控件使用详解
详解CentOS6.5 安装 MySQL5.1.71的方法
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
Python文件操作最佳实践_稳定性说明【指导】
如何在阿里云完成域名注册与建站?
C#如何调用原生C++ COM对象详解
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
如何快速搭建高效服务器建站系统?
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
Linux系统命令中tree命令详解
如何在建站主机中优化服务器配置?
教你用AI润色文章,让你的文字表达更专业
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
如何在万网ECS上快速搭建专属网站?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
Laravel怎么在Controller之外的地方验证数据
制作电商网页,电商供应链怎么做?
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
香港网站服务器数量如何影响SEO优化效果?
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
Python制作简易注册登录系统
什么是javascript作用域_全局和局部作用域有什么区别?
,网页ppt怎么弄成自己的ppt?
如何用低价快速搭建高质量网站?
PythonWeb开发入门教程_Flask快速构建Web应用
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
Laravel如何保护应用免受CSRF攻击?(原理和示例)
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
iOS中将个别页面强制横屏其他页面竖屏
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
HTML 中动态设置元素 name 属性的正确语法详解
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
如何快速建站并高效导出源代码?
微信小程序 五星评分(包括半颗星评分)实例代码
Laravel怎么调用外部API_Laravel Http Client客户端使用


ation