当前位置: 首页 > 知识库问答 >
问题:

对于OpenAPI(swagger-php),如何自动生成查询参数?

曾涵育
2023-03-14

我正在编写一个OpenAPI规范,并试图从请求路由/路径的注释中自动(使用swagger-php)生成我可能的查询参数。我知道我可以为每个路由键入所有可能的参数选项,但我确实需要能够使用注释从类的属性自动生成可能的参数,就像我可以为请求体所做的那样。(我们将有大量的类/路径,除非它们像请求体/JSONContent那样生成,否则很可能无法保持更新。这在一般的swagger-php甚至OpenAPI中可能吗?

我让它与put和请求体一起工作,但是对于仍然使用类属性的get请求,我如何做到这一点呢?

php prettyprint-override">    /**
     * @return Response
     *
     * * @OA\Put(
     *     path="/persons",
     *     tags={"Person"},
     *     @OA\RequestBody(
     *          request="person",
     *          required=false,
     *          description="Optional Request Parameters for Querying",
     *          @OA\JsonContent(ref="#/components/schemas/Person")
     *      ),
     *     @OA\Response(
     *          response="200",
     *          description="Returns matching Person Object",
     *          @OA\JsonContent(
     *              type="array",
     *              @OA\Items(ref="#/components/schemas/Person")
     *          )
     *     )
     * )
     */

为30+个类写出每个参数是不可维护的:

     /** @OA\Get(
     *     path="/events",
     *     tags={"Events"},
     *     @OA\Parameter(
     *          name="eventID",
     *          in="query",
     *          required=false,
     *          description="The event ID specific to this event",
     *          @OA\Schema(
     *              type="string"
     *          ),
     *     ),
    *
   * ....etc

共有1个答案

陈开宇
2023-03-14

Swagger-PHP需要注释来记录查询参数。通过添加顶级@oa\parameter注释,可以在一定程度上减少代码重复,这些注释可以使用$ref=“#/components/parameters/param_name”引用,如下所示。

/**
 * @OA\Parameter(
 *   parameter="eventID_in_query",
 *   name="eventID",
 *   description="The event ID specific to this event",
 *   @OA\Schema(
 *     type="string"
 *   ),
 *   in="query",
 *   required=false
 * )
 */

...

     /** @OA\Get(
     *     path="/events",
     *     tags={"Events"},
     *     @OA\Parameter(ref="#/components/parameters/eventID_in_query"),
 类似资料:
  • 在我的Zend应用程序中,我正在为移动应用程序编写一个小API。为了方便移动开发者,我使用了Swagger。到目前为止,除了一个GET请求外,一切正常。 当我呼叫/user/messages/{sessionToken}时?numMessages={numMessages} 有人知道我的错误吗? 欢迎任何帮助。 诚挚的问候 罗特曼 更新:按照建议,我将两个参数类型都更改为“查询”并更改了路径: 但

  • 有什么方法可以记录下面的查询吗? 其中查询参数名称是动态的,将从客户端接收。 我正在使用最新的Swagger API。

  • 假设我有一个URL,其路径为: 如何将其转换为大摇大摆的文档,具体地说,将对象数组和数组作为查询参数。

  • 编辑:在这里发帖后发现了这篇文章,请看下面的回答 我正在使用服务栈及其OpenApi插件。我不确定这是否是一个摇摆用户界面问题,服务栈或我的代码中的某些东西。 我有一个 POST 终结点,我希望在其中填充“客户”属性: 客户类具有许多属性,如“名字”等。 当我在swagger-ui中查看时,我可以看到“示例值”缺少名称“客户”,而JSON对象“客户”应该放在这个名称中: 如果我按下“尝试一下”按钮

  • 我正在开发一个Spring Boot应用程序的后端,该应用程序使用OpenAPI和Swagger通过模式为前端应用程序提供接口。yml文件。当对控制器进行更改时,我们使用swagger ui获取api文档JSON,使用在线swagger编辑器将其转换为yaml,并将结果粘贴到模式中。yml文件 现在,我想让它自动化,这样我们就可以调用一个maven任务来自动生成yaml文件,但我找不到任何mave