首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于OpenAPI (swagger-php),如何自动生成查询参数?

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

Stack Overflow用户
提问于 2019-03-24 01:29:29
回答 1查看 4.6K关注 0票数 2

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

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

我可以对请求正文执行此操作:

代码语言:javascript
复制
    /**
     * @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+类写出每个参数将不可维护:

代码语言:javascript
复制
     /** @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
EN

回答 1

Stack Overflow用户

发布于 2019-03-26 00:47:44

Swagger-PHP需要注释来记录查询参数。您可以通过添加可以使用$ref="#/components/parameters/PARAM_NAME"引用的顶级@OA\Parameter注释来减少代码重复,如herehere所示。

代码语言:javascript
复制
/**
 * @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"),
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55316486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档