如何使用 l5-swagger 指定 extraProperties

bad*_*uck 3 laravel swagger openapi

我正在尝试为一个项目(用 Laravel 编写)编写 OpenAPI 文档,并在几个 API 点上苦苦挣扎。

一返回

{
    "active_options": {
        "1": {
            "name": "name1",
            "type": "type1"
        },
        "2": {
            "name": "name2",
            "type": "type2"
        },
        "3": {
            "name": "name3",
            "type": "type3"
        }
    },
    "server": {
        "url": "URL...",
        "settings1": "value"
    },
    "message": "Server settings retrieved."
}
Run Code Online (Sandbox Code Playgroud)

我正在努力解决如何使用 l5-swagger 插件编写此注释。“1”、“2”、“3”是可选的,它们的任意组合都有效。

我想使用optionalProperties,但我不知道如何将它们组合在一起。

这是我得到的最接近的:

     *   @OA\Response(
     *     response=200,
     *     description="Settings",
     *     @OA\JsonContent(
     *       @OA\Property(property="options",
     *         @OA\Items(
     *            @OA\Property(property="name", type="string"),
     *            @OA\Property(property="type", type="string")
     *         )
     *       ),
     *     )
     *   ),


Run Code Online (Sandbox Code Playgroud)

但示例生成的是这样的:

{
  "options": [
    {
      "name": "string",
      "type": "string"
    }
  ]
}

Run Code Online (Sandbox Code Playgroud)

显然缺少"1":...部分。也许更好的问题是如何处理未命名的属性?

bad*_*uck 5

这是我的解决方案:

    /**
     *
     * @OA\Schema(
     *     schema="ExampleResponse",
     *   @OA\Xml(name="ExampleResponse"),
     *   @OA\Property(property="message", type="string", example="My solution."),
     *   @OA\Property(property="errors", type="object",
     *     @OA\AdditionalProperties(type="array",
     *       @OA\Items(
     *          @OA\Property(property="name", type="string"),
     *          @OA\Property(property="type", type="string")
     *       )
     *     )
     *   ),
     * )

     *
     */

Run Code Online (Sandbox Code Playgroud)