Swagger PHP对象而不是Array

时间:2015-06-24 23:04:32

标签: swagger-php

模型的示例swagger标记

* @SWG\Model(
 * id="UserSubscriptionSearchResultsFilter",
 *  @SWG\Property(name="total", type="integer"),
 *  @SWG\Property(name="perPage", type="integer"),
 *  @SWG\Property(name="query", type="string"),
 *  @SWG\Property(name="sortColumn", type="string"),
 *  @SWG\Property(name="sortDirection", type="string"),
 * )
 */

/**
 * @SWG\Model(
 * id="UserSubscriptionSearchResults",
 *  @SWG\Property(name="results",type="array", items="$ref:UserSubscriptionRepository"),
 *  @SWG\Property(name="total", type="integer"),
 *  @SWG\Property(name="filter",type="object", uniqueItems="$ref:UserSubscriptionSearchResultsFilter")
 * )
 */

现在架构看起来像:

"filter": "object"

相反,我想看到的是:

"filter":  {
        "total": 0,
        "perPage": 0,
        "query": "",
        "sortColumn": "",
        "sortDirection": ""
      }

现在我只能创建一个看起来与此类似的数组对象,但它仍然不是完整规范。

我在这里读过类似的问题: https://github.com/swagger-api/swagger-spec/issues/38 https://github.com/mission-liao/pyswagger/issues/18

但我没有找到明确的答案。

1 个答案:

答案 0 :(得分:1)

Swagger 2.0中的正确模式应该是这样的:

"definitions": {
  "filter": {
    "type": "object",
    "properties": {
       "total": {
          "type": "integer"
       },
       "perPage": {
          "type": "integer"
       },
       "query": {
          "type": "string"
       },
       "sortColumn": {
          "type": "string"
       },
       "sortDirection": {
          "type": "string"
       }
    }
  }
}

我猜您使用的项目是swagger-php。 以下是他们用于从here声明模型的示例的引用:

<?php
namespace PetstoreIO;
/**
 * @SWG\Definition(
 *   @SWG\Xml(name="Category")
 * )
 */
class Category
{
    /**
     * @SWG\Property(format="int64")
     * @var int
     */
    public $id;
    /**
     * @SWG\Property()
     * @var string
     */
    public $name;
}

从1.2升级到2.0时,术语从“模型”更改为“定义”。