如何在 swagger-php 中格式化 OpenApi,以便 swagger-ui 显示表单而不是数组?

问题描述

我正在构建 Laravel,并将所有 API 控制器方法的符号从@SWG 更新到@OA。当我在创建方法的 swagger-ui 中点击“尝试一下”时,我能够让它显示(并接受)一个可编辑的参数和值数组(后者是我编码的示例),但是我更愿意获得给定参数的一种形式,而不是在查询中发送。通过添加参数并将“in”参数设置为“body”,我能够在旧版本中做到这一点,但文档说我现在必须使用 requestBody。对结果不太满意...功​​能正常,但不是最佳的。

以下是我当前使用的 requestBody 示例:

/**
 *
 * @OA\RequestBody(
 *     request="Answer",*     description="Answer object that needs to be added.",*     required=true,*     @OA\JsonContent(ref="#/components/schemas/Answer")
 * )
 */

我怀疑我需要用@mediaType 做一些事情,但是当我尝试使用参数列表时,它没有给我任何东西 8(

我错过了什么?

解决方法

我将 requestBody 与响应混为一谈……我想我需要发送 json 才能返回 json。不,大声笑,只需要使用表单数据 mediaType 发送它。

这是我最终得到的,以防它对某人有所帮助:

/**
 *
 *  @OA\RequestBody(
 *      request="Answer",*      description="Answer object that needs to be added.",*      required=true,*      @OA\MediaType(
 *          mediaType="multipart/form-data",*          @OA\Schema(ref="#/components/schemas/Answer")
 *      )
 *  )
 */