首页 文章

swagger 2.0中JSON对象的模式类型是什么

提问于
浏览
1

我在Swagger 2.0的帮助下编写了一个API文档 . 我已经生成了一个API,其中响应是在书籍的数组中工作正常 .

[{
    "id": 1,
    "book_name": "The Complete Reference Java8",
    "author": "Herbert Schidt",
    "genre": "Technology"
}, {
    "id": 2,
    "book_name": "C Programming",
    "author": "Dennis Ritchie",
    "genre": "Technology"
}]

Swagger

/fetchBooks:
get:
  description: |
    Returns an array of book objects.

  responses:
    200:
      description: Successful response
      schema:
        title: ArrayOfBooks
        type: array
        items:
          type: object
          properties:
            id:
              type: integer
            book_name:
              type: string
            author:
              type: string
            genre:
              type: string

好吧,我想在一个API中只发送一个书的详细信息 JSONObject 我应该采用什么模式类型,因为我试过对象不起作用 .

{
    "id": 1,
    "book_name": "The Complete Reference Java8",
    "author": "Herbert Schidt",
    "genre": "Technology"
}

Swagger

/fetchBook:
get:
  description: |
    Returns a book object

  parameters:
    - name: id
      in: query
      description: Books Id's
      reqrequired: true
      type: integer
      format: int

  responses:  
    200:
      description: Successful response
      schema:
        type: object <-- What type should I specify for JSONObject here
        items:
          type: object
          properties:
            id:
              type: integer
            book_name:
              type: string
            author:
              type: string
            genre:
              type: string

由于对象不起作用,swagger没有显示 JSON 格式 .

当前状态 :

enter image description here

预期国家:

enter image description here

2 回答

  • 2
    /fetchBook:
        get:
          description: |
            Returns a book object
    
          parameters:
            - name: id
              in: query
              description: Books Id's
              required: true
              type: integer
              format: int
    
          responses:  
            '200':
              description: Successful response
              schema:
                type: object
                properties:
                  id:
                    type: integer
                  book_name:
                    type: string
                  author:
                    type: string
                  genre:
                    type: string
    

    你遇到的问题是在所要求的档案中输错

    并且fallowing是单个Object响应的正确语法

  • 2

    提示:如果要在多个操作中重用相同的模式 - 例如有一个 BookArrayOfBooks ,你可以在 definitions 部分定义模式,在其他地方定义 $ref .

    paths:
      /fetchBooks:
         get:
           ...
           responses:
             200:
               description: Successful response
               schema:
                 $ref: '#/definitions/ArrayOfBooks'  # <--------
      /fetchBook:
         get:
           ...
           responses:
             200:
               description: Successful response
               schema:
                 $ref: '#/definitions/Book'          # <--------
    
    definitions:
      Book:
        type: object
        properties:
          id:
            type: integer
          book_name:
            type: string
          author:
            type: string
          genre:
            type: string
      ArrayOfBooks:
        type: array
        items:
          $ref: '#/definitions/Book'  # <--------
    

    此外,如果这是正在开发的新API而不是现有API,则 GET /fetchBooks 中的"fetch"是冗余的(GET = fetch) . 考虑删除"fetch"并仅使用 GET /booksGET /book?id=... .

相关问题