Для OpenAPI (swagger-php), как я могу автоматически генерировать параметры запроса? - PullRequest
0 голосов
/ 23 марта 2019

Я пишу спецификацию OpenAPI и пытаюсь автоматически сгенерировать возможные параметры запроса (используя swagger-php) из аннотаций для маршрута / пути запроса.Я знаю, что могу просто напечатать все возможные варианты параметров для каждого маршрута, но мне действительно нужно иметь возможность генерировать возможные параметры из свойств класса автоматически, используя аннотации, как я могу сделать для тела запроса.(У нас будет множество классов / путей, и их обновление, скорее всего, не произойдет, если они не будут сгенерированы так, как это может быть тело запроса / JsonContent. Возможно ли это с помощью swagger-php или даже OpenAPI в целом?

Я получил это для работы с путами и телом запроса, но как мне сделать это для запроса на получение, который все еще использует свойства класса?

Я могу сделать это для тела запроса:

    /**
     * @return Response
     *
     * * @OA\Put(
     *     path="/persons",
     *     tags={"Person"},
     *     @OA\RequestBody(
     *          request="person",
     *          required=false,
     *          description="Optional Request Parameters for Querying",
     *          @OA\JsonContent(ref="#/components/schemas/Person")
     *      ),
     *     @OA\Response(
     *          response="200",
     *          description="Returns matching Person Object",
     *          @OA\JsonContent(
     *              type="array",
     *              @OA\Items(ref="#/components/schemas/Person")
     *          )
     *     )
     * )
     */

Запись каждого параметра для 30+ классов не подлежит сопровождению:

     /** @OA\Get(
     *     path="/events",
     *     tags={"Events"},
     *     @OA\Parameter(
     *          name="eventID",
     *          in="query",
     *          required=false,
     *          description="The event ID specific to this event",
     *          @OA\Schema(
     *              type="string"
     *          ),
     *     ),
    *
   * ....etc

1 Ответ

0 голосов
/ 25 марта 2019

Swagger-PHP требует аннотаций для документирования параметров запроса. Вы можете несколько уменьшить дублирование кода, добавив аннотации @OA\Parameter верхнего уровня, на которые можно ссылаться, используя $ref="#/components/parameters/PARAM_NAME", как показано здесь и здесь .

/**
 * @OA\Parameter(
 *   parameter="eventID_in_query",
 *   name="eventID",
 *   description="The event ID specific to this event",
 *   @OA\Schema(
 *     type="string"
 *   ),
 *   in="query",
 *   required=false
 * )
 */

...

     /** @OA\Get(
     *     path="/events",
     *     tags={"Events"},
     *     @OA\Parameter(ref="#/components/parameters/eventID_in_query"),
...