openapi-генератор-cli не генерирует документацию из файла PHP

#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>