#php #swagger #openapi #openapi-generator #swagger-php
Вопрос:
Предыстория: Я установил composer zircote/swagger-php
и установил openapi-generator-cli
его с помощью apt-get.
Я не уверен, правильно ли я пытаюсь использовать эти инструменты, однако мне не удалось найти документацию, указывающую мне в каком-либо направлении.
У меня есть файл контроллера с целой кучей кода в нем. Я хочу проверить, могу ли я сгенерировать файл json из него с помощью аннотации open api.
Вот пример моего кода (я вырезал из него несвязанные фрагменты):
<?php
/**
* @OAInfo(title="My First API", version="0.1")
*/
class Apiv1_LocationController extends App_Controller_API
{
/* Publicly exposed attributes and the field type for filtering */
protected $_exported = array('id','created','modified','name','address','phone','external_id','postcode','country','timezone','date_format','lacps','staff_count');
protected $_schematypes = array(
'string' => ['name','address','phone','external_id','postcode','country','timezone','date_format'],
'int' => ['id','staff_count'],
'timestamp' => ['created','modified'],
'complex'=> ['lacps'],
);
{more unrelated code...}
/**
* @OAGet(
* path="/api/resource.json",
* @OAResponse(response="200", description="An example resource")
* )
*/
public function getAction()
{
{code inside action...}
}
}
Команда cli, которую я использую:
openapi-generator-cli generate -g php -i <path_to_LocationController>
Я получаю следующую ошибку:
[main] INFO o.o.c.ignore.CodegenIgnoreProcessor - No .openapi-generator-ignore file found.
Exception in thread "main" java.lang.RuntimeException: Issues with the OpenAPI input. Possible causes: invalid/missing spec, malformed JSON/YAML files, etc.
Это наводит меня на мысль, что я неправильно использую инструмент openapi-generator-cli, поскольку я не ожидал бы, что мне понадобится файл JSON или YAML, я пытаюсь сгенерировать этот файл.
Я буду продолжать пытаться, но если бы кто-нибудь мог помочь мне понять, что я делаю неправильно или как я неправильно понимаю инструмент, я был бы очень признателен.
Ответ №1:
Поэтому я понял, что действовал совершенно неправильно.
Я использовал библиотеку zircote/swagger-php для создания файла JSON, который мне требовался, с помощью следующей команды (в каталоге, в котором я хотел создать JSON):
./<path_to_vendor_directory>/vendor/zircote/swagger-php/bin/openapi --pattern "*Controller.php" --output <name_of_file>.json --format json <location_to_search_from_recursively>