在 Laravel 中集成 Scalar:用 OpenAPI 文档渲染现代化 API 参考文档
在 Laravel 中集成 Scalar用 OpenAPI 文档渲染现代化 API 参考文档【免费下载链接】scalarScalar is an open-source API platform: Modern REST API Client Beautiful API References ✨ 1st-Class OpenAPI/Swagger Support项目地址: https://gitcode.com/GitHub_Trending/sc/scalar导读本文讲解如何通过官方 Composer 包scalar/laravel在 Laravel 应用中把已有的 OpenAPI/Swagger 文档渲染成开箱即用的现代化 API 参考页面。你将掌握安装与配置、三种文档注入方式URL / 本地文件 / 内联内容、多文档切换、Laravel 风格主题切换以及基于 Gate 的访问授权最终让团队和调用方在/scalar路由获得与 Scalar 全平台一致的阅读与调试体验。一、scalar/laravel 是什么scalar/laravel是 Scalar 官方为 Laravel 提供的集成包它的定位非常聚焦渲染已有的 OpenAPI 文档本身不负责从 Laravel 代码生成 OpenAPI 文件。文档生成由生态中的其他包完成例如 dedoc/scramble它会引导你安装 Scribe、执行php artisan scribe:generate生成storage/app/scribe/openapi.yaml再将 Scribe 的type改为external_laravel、theme改为scalar最终在/docs路由展示参考文档。二、安装与发布配置在 Laravel 项目根目录执行以下命令完成安装composer require scalar/laravel随后运行安装命令它会发布配置文件并完成初始设置php artisan scalar:install到这里就已经可以开始使用了。如果你倾向于手动发布资源也可以按需执行# 发布配置文件到 config/scalar.php php artisan vendor:publish --tagscalar-config # 发布 Blade 视图仅当你想自定义视图模板时需要 php artisan vendor:publish --tagscalar-viewsscalar-config标签发布的config/scalar.php是后续所有配置的落点包括文档来源、主题与多文档sources列表scalar-views标签则用于覆盖渲染页面的 Blade 视图适合需要深度定制页面外壳的场景。三、如何提供 OpenAPI 文档url / file / content 三种方式在config/scalar.php中通过url、file、content三个键之一指向你的 OpenAPI 文档JSON 或 YAML 均可三种方式适用场景不同方式一URL浏览器端拉取——可以是应用自身提供的路径也可以是绝对地址url /openapi.yaml, // url https://example.com/openapi.json,相对 URL 只需保证与页面同源即可被浏览器访问跨域的绝对 URL 必须对公网可访问必要时可经由内置的proxyUrl代理转发跨域请求受浏览器 CORS 限制通过代理可绕过Scalar 提供了托管代理https://proxy.scalar.com与 Go 实现的自建代理示例详见 运行时配置文档。方式二本地文件服务端读取后内嵌进页面——文件无需对公网开放file storage_path(app/openapi.json),适合文档由 CI 生成、存放在应用内部目录的场景。方式三内联内容原始 JSON/YAML 字符串content { openapi: 3.1.0, info: { title: My API, version: 1.0.0 } },适合快速验证、文档极小或动态拼装的场景。当同时配置多个来源时优先级从高到低为filecontenturl。完成配置后访问/scalar路由即可看到渲染结果。补充content方式对大型文档可能影响首屏性能因为整份文档会被内嵌在页面中大文档建议优先使用url方式让浏览器缓存文档、后续请求更快。更多通用配置baseServerURL、servers、customCss、darkMode等可参考 configuration.md。四、Laravel 风格主题与内置主题参考文档默认启用 Laravel 风格的配色主题对应配置theme laravel。如果你不喜欢默认配色Scalar 还内置了一系列主题可选完整列表见config/scalar.php中的configuration.theme选项。仓库中 themes 包 的预设目录列出了当前可用的全部主题名default默认主题、alternate、moon、purple、solarizedbluePlanet、saturn、kepler、mars、deepSpace、laserwave切换主题只需要在配置中指定theme moon,如果你希望完全不做任何主题着色可以传入none。主题的底层实现基于 CSS 变量体系--scalar-color-1、--scalar-background-1、--scalar-color-accent等也可按 themes.md 中的说明自行覆写变量打造品牌主题。五、渲染多份文档sources 配置与 Scalar 门面5.1 通过sources配置静态列表当需要同时渲染多份 OpenAPI 文档时例如版本化 API 的v1/v2或公开与内部参考并存可以在config/scalar.php中定义sources参考页会渲染一个文档切换器// config/scalar.php sources [ [title API v1, slug v1, url /openapi/v1.yaml], [title API v2, slug v2, url /openapi/v2.yaml, default true], ],每个 source 支持的字段包括title显示名称slug可选用于在 UI 与 URL 中区分文档文档来源三选一url/content/filedefault可选标记为默认展示的文档sources列表默认取第一个为默认项。5.2 运行时动态注册Scalar 门面当文档列表是动态生成时比如由数据库或配置驱动可以通过Scalar门面在运行时注册文档例如在服务提供者中use Scalar\Facades\Scalar; Scalar::document(API v1)-url(/openapi/v1.yaml); Scalar::document(API v2)-file(storage_path(app/openapi/v2.json))-default();document()接受文档标题链式调用url()/file()/content()指定来源default()将该文档标记为默认。通过门面注册的文档优先级高于sources配置。Laravel Octane 注意在 Octane 常驻进程下管理器是长生命周期的单例因此应只在服务提供者中注册一次文档。如果确实需要在每次请求中注册请先调用Scalar::flush()清空避免文档重复堆积。六、访问授权用 viewScalar Gate 保护 /scalar 路由默认情况下/scalar路由对所有人开放。在非本地环境如生产需要限制访问时在App\Providers\AppServiceProvider中覆写viewScalarGate 即可?php namespace App\Providers; use App\Models\User; use Illuminate\Support\Facades\Gate; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { public function boot(): void { Gate::define(viewScalar, function (?User $user) { return in_array($user?-email, [ // ]); }); } }实现思路是在返回true的邮件白名单数组中填入允许访问的内部成员邮箱。?User $user允许匿名未登录请求进入回调由你决定未认证用户是否放行。这是 Laravel 标准 Gate 机制因此你也可以接入角色、权限或任何现有鉴权逻辑而不是局限于邮箱白名单。七、常用进阶配置速查结合 configuration.md 中的通用配置对象config/scalar.php里还经常搭配使用以下选项配置项作用示例值theme切换内置主题见上文列表keplerdarkMode初始是否深色模式默认falsetruelayout布局风格modern默认或classicSwagger UI 风格classicproxyUrl跨域请求代理规避 CORS 限制https://proxy.scalar.comcustomCss直接注入自定义 CSS* { font-family: ...; }hideModels隐藏 Models 区块truepersistAuth是否将认证凭据持久化到 localStorage注意安全风险falsewithDefaultFonts是否加载默认字体Inter / JetBrains Monofalse其中proxyUrl与 Laravel 集成尤其相关当url指向跨域文档时浏览器会因 CORS 限制而无法拉取配置代理后即可正常加载。八、从文档到实现的证据链上文各环节都能在当前仓库中找到对应实现依据主题预设packages/themes/src/presets/目录下包含default.css、kepler.css、moon.css等全部主题样式文件Laravel 主题即基于这套 CSS 变量体系实现通用配置configuration.md 对url/content/sources/theme/proxyUrl等选项的类型、默认值与示例给出了完整定义sources中每条文档同样支持title、slug、default与三种来源与 Laravel 集成层的语义一一对应代理参考实现projects/proxy-scalar-com/提供了符合 Scalar Proxy API 的 Go 代理示例说明跨域文档拉取并非任意反向代理可用而需要遵循特定接口约定。结语通过scalar/laravelLaravel 团队可以在数分钟内把已有的 OpenAPI 资产转化为风格统一、支持文档切换、可配置鉴权与主题的现代化 API 参考页面。无论你的文档来自 Scramble、Scribe 还是手写 YAMLurl/file/content三种注入方式都能覆盖绝大多数接入场景配合sources、Scalar门面与viewScalarGate从单文档演示到多版本生产部署都能平滑演进。后续若有配置更新可查看config/scalar.php的注释与 Scalar for Laravel 仓库 的最新变更记录。【免费下载链接】scalarScalar is an open-source API platform: Modern REST API Client Beautiful API References ✨ 1st-Class OpenAPI/Swagger Support项目地址: https://gitcode.com/GitHub_Trending/sc/scalar创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →