简单的Swagger.v2数组定义不响应

时间:2018-07-22 21:03:55

标签: swagger-2.0

正在尝试学招。为返回

的简单api创建模拟服务器

A)一个{id:someid,name:some name}形式的对象

b)这些对象的数组

我的第一部分正在工作,但第二部分将无法工作。谁知道可以在下面查看我的YAML定义吗?

swagger: "2.0"

info:
  version: 1.0.0
  title: Simple API
  description: A simple API to learn how to write OpenAPI Specification

schemes:
  - http
host: localhost:8080
basePath: /

这里定义了两个路径,第一个(/ api / dataset)有效,第二个(/ api / datasets)不起作用。

paths:
  /api/dataset: 
    get:
      summary: summary
      description: desc
      responses:
        200:
          description: dataset
          schema:
            $ref: '#/definitions/dataset'

  /api/datasets: 
    get:
      summary: summary
      description: desc
      responses:
        200:
          description: datasets list
          schema:
            $ref: '#/definitions/datasets'

这些是定义,我怀疑我在这里做错了...

definitions:
  dataset:
    type: object
    properties:
      dataset_id:
        type: string
      name:
        type: string
    required: 
      - dataset_id
      - name
    example:
      dataset_id: FunnyJokesData
      name: FunnyJokesData
  datasets:
    type: array
    items: 
      $ref: '#/definitions/dataset'
    example:
      - dataset_id: example_01
        name: example_01
      - dataset_id: example_02
        name: example_02
      - dataset_id: example_03
        name: example_03

使用此定义生成存根服务器后,  /api/dataset具有响应正文:

  

$ curl -X GET“ http://localhost:8080/api/dataset” -H“ accept:application / json”     %总计%接收的%Xferd平均速度时间时间时间当前                                    Dload上传总花费左速度   100 64 0 64 0 0 4000 0-:-:--:-:--:-:-4000 {     “ dataset_id”:“ FunnyJokesData”,     “名称”:“ FunnyJokesData”   }

但是'/ api / datasets'的curl响应为空:

  

$ curl -X GET“ http://localhost:8080/api/datasets” -H“ accept:application / json”     %总计%接收的%Xferd平均速度时间时间时间当前                                    Dload上传总花费左速度     0 0 0 0 0 0 0 0-:-:--:-:--:-:-0

我不知道为什么一个有效,而另一个无效。

感谢您的光临

1 个答案:

答案 0 :(得分:1)

我想“不起作用”仅适用于Node.js服务器存根,因为两个端点的Python / Flask存根都返回字符串"do some magic!"而不是JSON。

看起来Swagger Codegen的Node.js生成器不支持数组级example,这就是为什么相应的响应为空的原因。您可以在以下位置提交错误报告:https://github.com/swagger-api/swagger-codegen/issues

似乎可以与Node.js生成器一起使用的一种解决方法是改用response examples

  /api/datasets: 
    get:
      summary: summary
      description: desc
      responses:
        200:
          description: datasets list
          schema:
            $ref: '#/definitions/datasets'

          examples:
            application/json:
              - dataset_id: example_01
                name: example_01
              - dataset_id: example_02
                name: example_02
              - dataset_id: example_03
                name: example_03