首页 > 解决方案 > 无法在 PHP 上使用 Swagger 生成正确的响应

问题描述

我正在尝试在我的 API 文档中大摇大摆地生成响应模式。我确信除了这@OA\Property(property="professional_ids", type="array"条线之外其他任何东西都是正确的,但我不确定什么是错的。

我的招摇代码是:

     * @OA\Post(
     * path="professional/create",
     * summary="Create",
     * description="create",
     * operationId="create",
     * tags={"Professional"},
     * security={ {"default": {} }},
     * @OA\RequestBody(
     *  required=true,
     *  description="description",
     *  @OA\JsonContent(
     *      type="object",
     *      required={"name","body","state","body_number"},
     *      @OA\Property(property="name", type="string", example="marx", maxLength=255),
     *      @OA\Property(property="body", type="string", example="crm", maxLength=10),
     *      @OA\Property(property="state", type="string", example="am", maxLength=2),
     *      @OA\Property(property="body_number", type="string", example="123456", maxLength=255),
     *      @OA\Property(property="professional_ids", type="array",
     *          @OA\Items(type="object",
     *              @OA\Property(property="professional_id", type="integer", example="2")
     *              )
     *      )
     *  ),
     * ),
     * @OA\Response(
     *    response=200,
     *    description="Create Data",
     *    @OA\MediaType(
     *       mediaType="application/json",
     *       @OA\Schema(
     *          @OA\Property(property="data", type="object",
     *              @OA\Property(property="health_professional_info", type="object",
     *                  @OA\Property(property="id", type="integer", example="14"),
     *                  @OA\Property(property="name", type="string", example="marx", maxLength=255),
     *                  @OA\Property(property="body", type="string", example="crm", maxLength=10),
     *                  @OA\Property(property="state", type="string", example="am", maxLength=2),
     *                  @OA\Property(property="body_number", type="string", example="123456", maxLength=255),
     *                  @OA\Property(property="professional_ids", type="array",
     *                      @OA\Items(type="object", 
     *                          @OA\Property(property="professional_id", type="integer", example="2")
     *                      ),
     *                      @OA\Items(type="object", 
     *                          @OA\Property(property="professional_id", type="integer", example="8")
     *                      )
     *                  )
     *              )
     *          ),
     *          @OA\Property(property="error", type="null", example="null")
     *      )
     *    )
     * )
     * )
     */

我的回应样本是:

{
  "data": {
    "professional_info": {
      "id": 14,
      "name": "marx",
      "body": "crm",
      "state": "am",
      "body_number": "123456",
      "professional_ids": [
        {
          "professional_id": 2
        }
      ]
    }
  },
  "error": null
}

但我需要得到的是:

{
  "data": {
    "professional_info": {
      "id": 14,
      "name": "marx",
      "body": "crm",
      "state": "am",
      "body_number": "123456",
      "professional_ids": [
        {
          "professional_id": 2
        },
        {
          "professional_id": 8
        }
      ]
    }
  },
  "error": null
}

有谁知道如何纠正这个?提前谢谢^.^

标签: phplaravelswaggeropenapi

解决方案


推荐阅读