在ReDoc中使用zircote/swagger-php (OpenAPI / Symfony)排序API路径



我找不到一种方法来排序我的PHP注释中定义的API路径与zircote/swagger-php,我在OpenAPI规范和swagger-php文档中都没有找到任何东西来实现这一点。这个相关的GitHub线程没有多大帮助。

open-api.json文件由以下命令生成:bin/openapi -o doc/open-api.json --format json src.

ReDoc按照在"path "中定义的顺序显示路径。变量在open-api.json,但路径的顺序在生成的文件是相当随机的(+他们并不总是匹配文件中的php注释的顺序)。

点击查看图片:路径随机排序

我尝试使用ReDocsortOperationsAlphabetically选项(似乎不支持zircote/swager -php),并设置一个operationId到我的路径。

我还尝试添加使用SortComponents处理器,但未能加载它。

作曲家。json:PHP 7.4.33Symfony 3.4zircote/swagger-php 3.3.3

包。json (webpack)"redoc"^ 2.0.0-rc.8-1"

谢谢你的帮助:)

我刚刚检查了最新的主机和SortComponents处理器确实为我工作。您必须小心确保处理器类对自动加载器可见。从Examples文件夹,情况并非如此。

同样,示例处理器对组件进行排序;对于路径,你可能想要一些这样的变化:

<?php declare(strict_types=1);
namespace OpenApiProcessors;
use OpenApiAnalysis;
/**
* Sorts paths so they appear in alphabetical order in the generated specs.
*/
class SortPaths
{
public function __invoke(Analysis $analysis)
{
if (is_iterable($analysis->openapi->paths)) {
usort($analysis->openapi->paths, function ($a, $b) {
return strcmp($a->path, $b->path);
});
}
}
}