Laravel如何做API文档_Laravel注释生成接口文档【说明】

梦宇吖_3286

梦宇吖_3286

2026-05-01

457人浏览

原创

必须先安装 darkaonline/l5-swagger 包,否则 @oa\get 等注解无效;需匹配 laravel 版本(laravel 11 用 ^8.4+),发布配置后正确设置 paths.annotations,并确保注解路径、参数名与 routes/api.php 完全一致,手动定义 @oa\schema 响应体,启用 swagger_ui_enabled 并确认路由存在。

laravel如何做api文档_laravel注释生成接口文档【说明】

用 @OA\Get 这类注解前,先装好 darkaonline/l5-swagger

不装这个包,写再多 @OA\Get、@OA\Parameter 注解都没用——Laravel 不会识别,php artisan l5-swagger:generate 会直接报错说找不到类。它不是 Laravel 自带的,也不是 PHP-FIG 标准,纯靠这个包把注解翻译成 OpenAPI JSON。

安装时注意 Laravel 版本匹配:darkaonline/l5-swagger:^8.0 对应 Laravel 9/10;Laravel 11 要用 ^8.4 以上(否则 config/l5-swagger.php 里 routes.api 配置项会失效)。

  • 运行 composer require "darkaonline/l5-swagger:^8.4" 后,务必执行 php artisan vendor:publish --provider="L5Swagger\L5SwaggerServiceProvider"
  • 发布后检查 config/l5-swagger.php 中的 paths.annotations,默认是 app/Http/Controllers,如果你的 API 控制器在 app/Http/Controllers/Api/V1,得手动加进去,不然扫描不到
  • 别在 routes/web.php 里写 API 注解——路由没注册到 API 中间件组,Swagger UI 点“Try it out”会 401 或 404

@OA\Get 和 @OA\Post 必须和路由定义对齐

注解不是装饰品,它得和 routes/api.php 里的实际路由完全一致:HTTP 方法、URL 路径、参数占位符名称,一个字符都不能差。比如路由写的是 Route::get('/users/{id}', [UserController::class, 'show']),那注解里的 path="/users/{id}" 就不能写成 /users/{user_id},否则 Swagger UI 里生成的请求 URL 是错的,调试时永远 404。

  • 路径参数名必须一致:{id} 就是 {id},别改成 {userId},哪怕变量名在方法里叫 $userId
  • 查询参数(?page=1&sort=name)要用 @OA\Parameter(name="page", in="query", ...) 显式声明,不写就不会出现在文档的“Parameters”面板里
  • 如果路由用了前缀如 Route::prefix('api/v1')->group(...),注解里的 path 就只写 /users,不要重复写 /api/v1/users,否则生成的路径会变成双份前缀

@OA\Schema 定义响应体时,别直接引用 Eloquent 模型类

@OA\Schema(ref="#/components/schemas/User") 看起来省事,但一旦模型字段动态变化(比如加了 appends、改了 $casts、用了 makeHidden),文档就和真实返回不一致。Swagger 不会运行 PHP 代码去反射模型,它只认你手写的 @OA\Property。

laravel-specialist
laravel-specialist

精通 Laravel 10+,遵循现代 PHP 实践的 Laravel 专家。擅长优雅语法、Eloquent ORM、队列系统及企业级特性...

下载

更麻烦的是:Eloquent 的 $dates、$casts、访问器(accessor)不会自动转成 OpenAPI 类型。比如 is_active 是 tinyint(1),PHP 返回布尔值,但没声明 type="boolean",Swagger 就当它是整数,前端 Typescript 生成器会产出错误类型。

  • 响应体老实用 @OA\Schema + @OA\Property 手动列字段,尤其注意 type 和 format(date-time 不能写成 datetime)
  • 数组字段写 @OA\Property(type="array", @OA\Items(type="string")),别漏掉 @OA\Items,否则 Swagger UI 显示 “unknown type”
  • 如果返回的是资源集合(UserResource::collection()),注解里要写 @OA\Response(... @OA\JsonContent(type="array", @OA\Items(ref="#/components/schemas/User"))),不是直接 ref 到单个 schema

生成文档后打不开 UI?检查 SWAGGER_UI_ENABLED 和中间件

运行 php artisan l5-swagger:generate 成功,不代表能访问 /api/documentation。默认配置下,这个路由只在 APP_ENV=local 时启用,生产环境直接 404。另外,Laravel 10+ 默认加了 PreventRequestsDuringMaintenance 中间件,如果站点进了维护模式,Swagger UI 也进不去,但错误提示是 503,容易误判为配置问题。

  • 临时开启:在 .env 加 SWAGGER_UI_ENABLED=true,并确保 APP_ENV=local 或在 config/l5-swagger.php 里把 swagger_ui_enabled 设为 true
  • 访问路径是 /api/documentation(不是 /docs 或 /swagger),且必须走 HTTPS(如果 APP_URL 配了 https)
  • 如果用了 Sanctum 或 Passport,Swagger UI 的 “Authorize” 按钮点开后填的是 Bearer Token,但实际请求头要加 Authorization: Bearer xxx,少个空格或大小写错误都会 401

最常被忽略的是:注解写在控制器方法里,但那个方法根本没被路由指向——生成的 JSON 里压根没有这条接口,UI 上自然看不到。别只盯着注解语法,先 php artisan route:list | grep users 确认路由存在。

大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

laravel

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2024.04.09

857

10

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

2024.04.09

855

9

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2024.04.09

2508

10

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.10

4381

7

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

2025.08.05

6350

22

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

2025.08.05

4196

13

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

2025.08.05

7869

7

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

2026.03.04

1496

29

Laravel 框架安装指南
Laravel 框架安装指南

本指南详解 Laravel 框架安装全流程,涵盖 PHP 8.1+ 环境配置、Composer 依赖管理工具安装及国内镜像源优化。重点演示使用 composer create-project 命令创建 Laravel 10/11 项目,解决常见安装错误与依赖冲突。从环境搭建到项目初始化,助您快速完成 Laravel 开发环境部署,为后续 Web 应用开发奠定基础。适合 PHP 初学者与框架迁移开发者参考。

2026.04.09

215

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何安装 Composer
如何安装 Composer

共1课时 | 213人学习

Composer手册
Composer手册

共0课时 | 0人学习