空间 Laravel 发布了 OpenAPI CLI,这是一个可以将 OpenAPI 规范转换为专用 Laravel Artisan 命令的软件包。规范中的每个 API 端点都会获得一个单独的命令,其中包含路径和查询参数以及请求体的可配置选项。
工作原理
安装完成后,您可以使用以下方式注册 OpenAPI 规范 URL:
OpenApiCli
外观——通常在你的
AppServiceProvider
:
命名空间
应用程序\提供商
;使用
Illuminate\支持\服务提供商
;使用
空间\OpenApiCli\Facades\OpenApiCli
;班级
应用服务提供商
延伸
服务提供者{
民众
功能
引导
(){
OpenAPI CLI
::
登记
(
'https://api.acme.com/openapi.yaml'
,
'acme'
)
->
基础网址
(
'https://api.acme.com'
)
->
持票人
(
环境
(
'ACME_API_TOKEN'
));}}
给定一个定义规范
GET /orders
,
POST /orders
, 和
DELETE /orders/{order_id}
该软件包会生成以下 Artisan 命令:
acme:get-ordersacme:post-ordersacme:delete-ordersacme:list
这
acme:list
该命令显示所有可用的端点及其描述。
命令遵循以下模式
{prefix}:{http-method}-{path}
其中前缀是注册时给出的名称(第二个参数)。
register
方法),并将路径转换为 kebab-case 格式,并去除路径参数。
GET /orders/{order_id}/items
变成
acme:get-orders-items
如果你的规范定义了操作 ID,你可以使用这些 ID 来代替。
->useOperationIds()
。
运行命令
您可以直接从终端调用任何生成的命令:
php
工匠
acme:获取订单
--limit=10
默认情况下,响应以易于阅读的表格形式呈现。传递
--yaml
改为输出 YAML 格式的标志:
php
工匠
acme:获取订单
--limit=10
--yaml
路径和查询参数
路径参数是必需的,查询参数是可选的。两者都会转换为 kebab-case 格式。
order_id
和
orderId
两者都变成了
--order-id
:
# 路径参数php
工匠
acme:获取订单项
--order-id=42# 多路径参数php
工匠
acme:删除客户订单
--customer-id=1
--order-id=7# 查询参数php
工匠
acme:获取订单
--status=pending
--limit=10
查询字符串中的括号表示法也会被扁平化为 kebab-case 格式,因此
filter[status]
变成
--filter-status
。
发送数据
对于接受请求正文的端点,您可以使用以下方式单独发送字段:
--field
:
php
工匠
acme:邮购
- 场地
customer_id=1
- 场地
状态="待处理"
默认情况下,字段以 JSON 格式发送,除非规范另有规定。
application/x-www-form-urlencoded
如果需要发送原始 JSON,请使用
--input
反而:
php
工匠
acme:邮购
- 输入
'{"customer_id":1,"shipping":{"address":"123 Main St","city":"纽约"}}'
注意
--field
和
--input
不能合并。对于文件上传,请在字段值前加上前缀。
@
:
php
工匠
acme:post-orders-attachments
--order-id=67
- 场地
文件=@/path/to/invoice.pdf
当任何字段包含文件时,请求将以如下方式发送:
multipart/form-data
。
配置选项
注册 API 还通过流畅的接口支持多种选项:
OpenAPI CLI
::
登记
(
'https://api.acme.com/openapi.yaml'
,
'acme'
)
->
基础网址
(
'https://api.acme.com'
)
->
持票人
(
环境
(
'ACME_API_TOKEN'
))
->
横幅
(
“Acme Orders API v2”
)
->
缓存
(
生存时间
:
600
)
->
跟随重定向
()
->
yaml输出
()
->
显示HTML正文
()
->
使用操作 ID
()
->
错误
(
功能
(
回复
$response,
命令
$command) {
返回
匹配
($响应)
->
地位
()){
429
=>
命令
->
警告
(
“限速……”
),
默认
=>
错误的
,};});
一些值得注意的选择:
cache(ttl: 600)— 将响应缓存指定秒数。followRedirects()— 自动跟随 HTTP 重定向useOperationIds()— 使用规范中的操作 ID 而不是 HTTP 方法和路径来命名命令。onError()— 接受一个回调函数来处理特定的 HTTP 错误状态代码
安装
通过 Composer 安装:
作曲家
要求
space/laravel-openapi-cli
该软件包也能很好地与以下组件集成: 拉拉维尔零 一个用于构建独立 CLI 应用程序的框架。
完整文档可在以下网址获取: Spatie 的文档网站 您可以在[此处插入链接]查看源代码。 GitHub 。





