openapi 3.0 - 从数组更改为 dictionary/hashmap

openapi 3.0 - change from array to dictionary/hashmap

这基本上是 Swagger Hub 中的库存示例,在数组中更改了一些项目。这是我向我的 SwaggerHub URL:

发出 Python 请求时的响应
[{
    "hostname": "server",
    "ip_addr": "192.168.0.12",
    "app_name": "generic",
    "app_code": 12345678,
    "xmx": "5678",
    "jvm_version": "1.0.0",
    "xms": "1234"
}]

如何更改代码使其成为字典?我无法相信需要多少行 YAML 才能完成 Flask 或 Falcon 可以用大约 5 行代码完成的工作。

无论如何,这是模板:

openapi: 3.0.0
# Added by API Auto Mocking Plugin
servers:
  - description: SwaggerHub API Auto Mocking
    url: https://virtserver.swaggerhub.com/james_test/test/1.0.0
info:
  description: This is a simple API
  version: "1.0.0"
  title: Simple Inventory API
  contact:
    email: you@your-company.com
  license:
    name: Apache 2.0
    url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
tags:
  - name: admins
    description: Secured Admin-only calls
  - name: developers
    description: Operations available to regular developers
paths:
  /data:
    get:
      tags:
        - developers
      summary: get random data from james_test API
      operationId: searchInventory
      description: |
        By passing in the appropriate options, you can search for
        available inventory in the system
      responses:
        '200':
          description: search results matching criteria
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/state_data'
        '400':
          description: bad input parameter
components:
  schemas:
    state_data:
      type: object
      required:
        - app_code
        - app_name
        - jvm_version
        - hostname
        - ip_addr
        - xms
        - xmx
      properties:
        app_code:
          type: integer
          format: int64
          example: 12345678
        app_name:
          type: string
          example: generic
        jvm_version:
          type: string
          format: string
          example: '1.0.0'
        hostname:
          type: string
          format: hostname
          example: 'server'
        ip_addr:
          type: string
          format: ipv4
          example: '192.168.0.12'
        xms:
          type: string
          format: string
          example: '1234'
        xmx:
          type: string
          format: string
          example: '5678'

谢谢大家

编辑:

我希望得到这样的回复:

{
    "hostname": "server",
    "ip_addr": "192.168.0.12",
    "app_name": "generic",
    "app_code": 12345678,
    "xmx": "5678",
    "jvm_version": "1.0.0",
    "xms": "1234"
}

SwaggerHub 模拟服务器 returns 一个数组,因为您的响应被定义为一个数组:

          content:
            application/json:
              schema:
                type: array   # <----
                items:
                  $ref: '#/components/schemas/state_data'

要获取对象响应,请使用:

          content:
            application/json:
              schema:
                $ref: '#/components/schemas/state_data'