Swagger-php - 如何以编程方式添加路径?

时间:2017-09-12 03:38:48

标签: php json swagger swagger-php

我正在使用Swagger for Documentation。 从注释生成json文件非常有用。 此外,我想以编程方式为生成的json文件添加更多路径。

我发现Swagger类有合并方法所以我试图反序列化我的json字符串并合并到Swagger对象中,如下所示,但没有运气。

$swagger = \Swagger\scan($appDir);
$jsonString = json_encode([
        "path" => [
            "path" => "/api/task/{taskName}",
            "parameter" => [
                "ref" => "#/parameters/taskName"
            ]
        ],
    ]);
$objectToMerge = (new Serializer())->deserialize($jsonString, 'Swagger\Annotations\Path');
$swagger->merge($object);

我不知道我做得对。有人使用过Swagger merge方法或mergeProperties方法吗?或者还有另一种方法来实现我的目标吗?

1 个答案:

答案 0 :(得分:1)

好的,我发现了问题。

问题是因为作为第一个参数放入反序列化方法的json字符串不合适。

json字符串的形成不是OpenAPI规范。我认为这种形式在Swagger-php内部使用。

这是正确的json形成。

[
    "path" => "/api/task/{taskName}",
    "post" => [
        "path" => "/api/task/{taskName}",
        "tags" => ['test'],
        "summary" => "summary test",
        "description" => "description test",
        "produces" => ['application/json']
    ]
]

希望这可以帮助有人遇到麻烦。