Я использую Swagger для документации.
Генерация файла 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
метод? Или есть другой способ достичь моей цели?
Хорошо, я понял проблему.
Проблема заключалась в том, что строка 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']
]
]
Надеюсь, что это поможет кому-то в беде.
Других решений пока нет …