Swagger, как определить вложенное свойство?

Я использую Swagger PHP, и большинство определений легко определить, но у меня проблема с конкретным фрагментом данных, который не является частью отдельного класса, а вместо этого является ассоциативным массивом.

Ответ json, который я хочу показать (упрощенно для этого вопроса):

{
"id": 1,
"status": "published",
"gps": {
"lat": "0.00000000",
"lng": "0.00000000"}

id а также status достаточно легко определить, однако gps Это проблема, так как нет отдельного класса, в котором он может быть определен, это массив внутри модели. Можно ли определить этот массив, не создавая фиктивный класс?

Комментарии в файле модели на данный момент:

/**
* @SWG\Definition(@SWG\Xml(name="Event"))
*/
class Event extends BaseModel {
/**
* @SWG\Property(
*      property="id",
*      type="integer",
*      example="103"* )
* @SWG\Property(
*      property="status",
*      type="string",
*      enum={"published", "draft", "suspended"}
*      example="published"* )
*/

}

5

Решение

Столкнулся с точно такой же проблемой и решил ее сегодня!

Это для Swagger 2.0

Ниже приведена вложенность аннотации, которую я использовал для достижения вложенных параметров.

/**
* @SWG\Post(
*   path="/getCustomerByEmail.php",
*   summary="List the details of customer by the email.",
*   consumes={"string"},
*   produces={"application/json"},
*   @SWG\Parameter(
*     name="email",
*     in="body",
*     description="Customer email to ge the data",
*     required=true,
*     @SWG\Schema(
*       @SWG\Property(
*         property="id",
*         type="object",
*         @SWG\Property(
*           property="abc",
*           type="object",
*           @SWG\Property(
*             property="inner abc",
*             type="number",
*             default=1,
*             example=123
*           )
*         ),
*         @SWG\Property(
*           property="xyz",
*           type="string",
*           default="xyz default value",
*           example="xyz example value",
*         )
*       )
*     )
*   ),
*   @SWG\Response(
*     response=200,
*     description="Details of the customer"*   ),
*   @SWG\Response(
*     response=400,
*     description="Email required"*   ),
*   @SWG\Response(
*     response=404,
*     description="Customer does not exist"*   ),
*   @SWG\Response(
*     response="default",
*     description="an ""unexpected"" error"*   )
* )
*/
/**

Выход как показано ниже

Замечания: Я работал над проектом, который требовал сырой PHP, но все же
хотел использовать Swagger. Поэтому вместо создания моделей я использовал это
Техника для создания вложенных параметров.


Изменить 1: я не знаю, в чем проблема, пользовательский интерфейс, как и ожидалось, но во время выполнения запроса, нет никаких данных в сообщении или полезной нагрузки.

Редактировать 2: Преобразованный Get to Post.
Отлично работает с file_get_contents("php://input")

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]