У меня есть конечная точка API в моем приложении Symfony 4, которую я хочу задокументировать с помощью NelmioApiDocBundle и Swagger. Конечная точка принимает JSON в качестве данных запроса, а также возвращает некоторый настраиваемый JSON в качестве ответа. Как я могу добавить их примеры в документацию, используя аннотации? Я не вижу ни одного из примеров на странице документации, только описание.

/**
 * @Route("/order/import", methods={"POST"}, name="order_import")
 * @OA\RequestBody (
 *     request="order",
 *     description="Order data in JSON format",
 *     @OA\Schema(
 *        type="object",
 *        example={"hello": "world"}
 *     )
 * )
 * @OA\Response(
 *     response=200,
 *     description="Returns the JSON data after import",
 *     @OA\Schema(
 *        type="object",
 *        example={"foo": "bar"}
 *     )
 * )
 * @OA\Tag(name="import")
2
Boykodev 5 Окт 2020 в 15:04

1 ответ

Лучший ответ

Для NelmioApiDocBundle v4 вы можете сделать это так

use OpenApi\Annotations as OA;

/**
 * @OA\Parameter(
 *     name="body",
 *     in="path",
 *     required=true,
 *     @OA\JsonContent(
 *        type="object",
 *        @OA\Property(property="property1", type="number"),
 *        @OA\Property(property="property2", type="number"),
 *     ),
 * )
 *
 * @OA\Response(
 *     response=200,
 *     description="",
 *     @OA\JsonContent(
 *        type="object",
 *        @OA\Property(property="property1", type="number"),
 *        @OA\Property(property="property2", type="number"),
 *     )
 * )
 */

Для v3

use Swagger\Annotations as SWG;

/**
 * @SWG\Parameter(
 *     name="body",
 *     in="body",
 *     required=true,
 *     @SWG\Schema(
 *         @SWG\Property(property="test1", type="string"),
 *         @SWG\Property(property="test2", type="string"),
 *     ),
 * )
 *
 * @SWG\Response(
 *     description="",
 *     response=200,
 *     @SWG\Schema(
 *         @SWG\Property(property="test1", type="string"),
 *         @SWG\Property(property="test2", type="string"),
 *     ),
 * )
 */

Но лучше сделать это с помощью аннотации @Model, как описано в doc, если у вас есть DTO или объект.

4
Ihor Kostrov 5 Окт 2020 в 14:44