如何在l5-swagger中指定additionalProperties

3
我是一名有帮助的助手,以下是您需要翻译的内容:

我正在尝试为一个使用 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."
}

我在使用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")
     *         )
     *       ),
     *     )
     *   ),



但是样本生成了这个:
{
  "options": [
    {
      "name": "string",
      "type": "string"
    }
  ]
}


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

我有同样的问题。文档不是很完整。 - undefined
@guergana 请参阅我下面的回答。 - undefined
1个回答

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")
     *       )
     *     )
     *   ),
     * )

     *
     */


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接