Swagger-php在每个Model属性上添加“ schema”属性

时间:2019-08-08 00:25:33

标签: swagger openapi swagger-editor swagger-php

(这是我的第一个堆栈溢出帖子,所以请放心,哈哈)

我正在使用:
-OpenApi(v3)
-L5-Swagger(swagger-php和swagger-ui的包装器)

我正在使用注释来生成OpenAPI规范。生成规范时,控制台没有错误。但是,在每个模型的每个属性中,一旦生成,就会添加一个附加属性。

我尝试过:
1.重新编写模型,
2.以不同的方式重写属性

我的一个模型和“ id”属性:

/**   
 * Class ActionPlan   
 *   
 * @OA\Schema(   
 *   description="Action Plans",   
 *   title="Action Plan Schema",   
 *   required={   
 *     "id",   
 *     "name",   
 *     "organization_id",   
 *     "assessment_period_id",   
 *     "completed",   
 *     "created_by",   
 *     "updated_by"   
 *   },   
 * )   
 *   
 * @OA\Property(   
 *   property="id",   
 *   type="integer",   
 *   format="int32",   
 *   description="Action Plan ID"   
 * )   

正在生成以下内容:

        "ActionPlan": {
            "title": "Action Plan Schema",
            "description": "Action Plans",
            "required": [
                "id",
                "name",
                "organization_id",
                "assessment_period_id",
                "completed",
                "created_by",
                "updated_by"
            ],
            "properties": {
                "id": {
                    "schema": "ActionPlan",
                    "description": "Action Plan ID",
                    "type": "integer",
                    "format": "int32"
                },

我正在做什么,正在生成“ schema”属性?

当我将规格文件放入Swagger编辑器时,它说ActionPlan.properties.id不应具有其他属性。附加属性:模式。

我只是想知道如何创建“ schema”属性。

谢谢!

1 个答案:

答案 0 :(得分:1)

我了解到,这种“错误”实际上根本不是错误。实际上,这是一个我从未意识到的非常有用的功能!当在其对应的OA \ Schema对象之外创建OA \ Property时,我想在每个属性中添加一个“ schema”属性,以创建一个引用,这样我们开发人员就不会对哪个OA \ Schema感到困惑属性属于。要删除此“模式”属性,只需将所有OA \ Properties移至其对应的OA \ Schema对象的内部即可。就是这样。

/**
  * Class ActionPlan
  *
  * @OA\Schema(
  *   description="Action Plans",
  *   title="Action Plan Schema",
  *   required={
  *     "id",
  *     "name",
  *     "organization_id",
  *     "assessment_period_id",
  *     "completed",
  *     "created_by",
  *     "updated_by"
  *   },
  *    @OA\Property(
  *      property="id",
  *      type="integer",
  *      format="int32",
  *      description="Action Plan ID"
  *    )
  * )
  */