lvzmen/apifox
Composer 安装命令:
composer require lvzmen/apifox
包简介
laravel create doc to apifox
README 文档
README
开发这个工具的主要解决的问题:
- 在手动创建apifox接口文档的时候,每个接口的字段都需要从数据表中获取字段说明,大量复制粘贴很麻烦;
- 导入json格式的响应时,会覆盖原来就存在的字段说明;
开发思路:
将每次请求和响应都保存在一个临时文件中,通过命令行触发apifox文档创建请求,解析临时文件中的内容,利用apifox提供的openapi接口,向指定项目自动创建文档。
1、安装
composer require lvzmen/apifox
2、配置
在laravel中的.env文件中引入如下配置:
APIFOX_PROJECT_ID=21***69
APIFOX_TOKEN=APS-PbMdZ0nu************UQu9nZKNbtfB
APIFOX_FILE_PATH=/tmp/api_fox.cnf
APIFOX_DB_CONNECTION=mysql
APIFOX_DB=forge
APIFOX_PROJECT_ID:在apifox中对应的项目id,详情请看官网;APIFOX_TOKEN:需要自己生成一个唯一的api请求token,如何获取请看官网;APIFOX_FILE_PATH:这是一个临时文件,用于保存每次请求和响应,作为原始数据发送到apifox;APIFOX_DB_CONNECTION:数据库链接名称,应该在config/database.php文件中获取;APIFOX_DB:要操作的数据库,从这个库中获取字段的说明;
3、如何使用
3.1 添加命令
一般通过命令行的方式触发文档生产功能,因此需要向Laravel中添加命令:
app/Console/Kernel.php:
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
protected $middlewareGroups = [
'api' => [
\Lvzmen\Apifox\Commands\Fox::class
],
];
}
3.2 添加中间件
这个中间件的目的就是拦截每次请求和响应,将这些数据保存到临时文件中:
app/Http/Kernel.php:app/Console/Kernel.php
<?php
namespace App\Console;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected $commands = [
\Lvzmen\Apifox\MiddleWares\Fox::class
];
}
3.3 配置自定义字段
如果有些字段无法从数据库中获取字段说明,则需要在database/data/apifox.json文档中设置字段:
{
"v1": {
"name": "乡镇名称",
"town_code": {
"type": "string",
"desc": "镇编码"
},
"village_code": {
"type": "string",
"desc": "村编码"
},
"wd": {
"type": "string",
"desc": "纬度"
},
"jd": {
"type": "string",
"desc": "经度"
},
"id": {
"type": "integer",
"desc": "主键"
},
"code": {
"type": "string",
"desc": "乡镇编码"
}
}
}
3.4 创建文档
在命令行中执行如下命令,可以根据临时文件中的请求和响应创建apifox的接口文档:
# 使用数据库中table_name表的字段说明,但是不采用自定义的字段说明
php artisan apifox table_name
# 使用在apifox.json中的字段说明,但是不使用数据库表字段说明
php artisan apifox v1
# 使用数据库表的字段说明,但是会被v1里的说明覆盖
php artisan apifox table_name.v1
4、待解决问题
- 现在apifox的openapi只提供了创建文档的接口,没有提供更新和删除的接口,因此如果对同一个url发起多次文档创建,则不会生效;
- 如果在apifox中已经存在了相同url的接口,则不会创建新的接口;
lvzmen/apifox 适用场景与选型建议
lvzmen/apifox 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 92 次下载、GitHub Stars 达 0, 最近一次更新时间为 2023 年 01 月 18 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「array」 「function」 「class」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 lvzmen/apifox 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 lvzmen/apifox 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 lvzmen/apifox 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A set of useful PHP classes.
PHPUnit extension to Mock PHP internal functions using Runkit.
A lite function pack for PHP.
MediaWiki extension that allows embedding external content, specified by URL, into your wiki pages
Trait providing methods to set class properties with an array.
PostgreSQL ROUND() function for Doctrine ORM
统计信息
- 总下载量: 92
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 15
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2023-01-18