2017-04-27 114 views
1

我在Swagger 2.0的幫助下編寫了一個API文檔。我已經生成了一個API,其中響應是在一系列書籍中工作正常。Swagger 2.0中的JSON對象的模式類型是什麼

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

揚鞭

/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" 
} 

揚鞭

/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 

作爲對象不工作,招搖沒有顯示JSON格式。

現狀:

enter image description here

預期狀態:

enter image description here

回答

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 

你得到的只是需要提交

和休耕是一個錯字問題正確的系統單個對象響應的ntax

+0

我將其更正爲「必需」。但目前的狀態是相同的https://i.stack.imgur.com/lM4ui.png和預期的狀態應該是https://i.stack.imgur.com/997tK.png –

+0

下游鏈接是使用完整的swagger規格在這個答案中,[鏈接](https://pastebin.com/raw/NFkxjDZz),我建議檢查一下你的縮進或其他因素,這可能會影響你的代碼,因爲這個招搖吧yaml重現你想要的反應 – codeWisperer

+0

非常感謝!它的工作 –

2

提示:如果要在多個操作中重複使用相同的模式 - 例如,有一個單一的Book和一個ArrayOfBooks,您可以在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是多餘的(GET =取)。考慮刪除「獲取」,只使用GET /booksGET /book?id=...

+1

非常感謝你提出偉大的方法海倫。 +1 –