iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0

前情提要

在前面的挑戰中,我們曾經體驗過Mock Serivces,可以在前後端討論出介面之後,根據規格開始各自的工作。那麼問題來,怎樣的介面才能讓前後端都能夠理解呢?

OpenAPI規範就很適合用來描述Restful API的介面,它透過json或是yaml格式來描述API能做什麼事以及如何去使用,優點就是不需要綁定程式語言,任何人都可以從這份規格讀懂它並完成實作。另外OpenAPI也因為有著既定格式與規範,所以機器也能讀懂,因此發展出了許多工具能產生文件,甚至產生部分的程式碼實作。

今日主題

今天的主題是關於如何透過Postman的API builder來載入OpenAPI定義好的規格,從而自動建構相關的API、Collection、Documentation以及Example。在開始今天挑戰前,記得把 Day 18: API specifications 複製到自己的工作區。

回到自己工作區後,打開今天資料夾API specifications,右方的文件有今天任務的提示,也可以直接按照下列步驟來操作:

  • 載入yaml: 點擊左上方Import,會跳出下面視窗,讓我們透過
    https://raw.githubusercontent.com/postmanlabs/spectral-postman/master/cosmos2.yaml這個連結來進行載入

    https://ithelp.ithome.com.tw/upload/images/20221004/201403176Y83t2vbOM.png

    下一步保持選項打勾就可以進行下一步,這樣將會在我們的工作區自動新增一個Collection

    https://ithelp.ithome.com.tw/upload/images/20221004/20140317zKacLbYKSf.png

  • 檢查載入結果
    載入後可以到APIs頁面的Definition觀看載入的結果,會發現當前載入的yaml檔案有需要修正的地方,下方的視窗也有顯示具體錯誤的原因

    https://ithelp.ithome.com.tw/upload/images/20221004/20140317x3k7zY9IXd.png
    這是因為Cosmos預期回傳一個陣列,所以需要定義items,而縮排後下面每一個item都是一個個Cosmo,調整如下,存檔後可以發現錯誤已被修正

        Cosmos:
          type: array
          items:
            required:
              - id
              - name
            properties:
              id:
                type: integer
                format: int64
              name:
                type: string
              tag:
                type: string
    
  • 驗證元素: 由於前面有修改Definitions,因此接著要如下圖,在Collection Documentation頁面右上找到Validate against Documentation,點擊後開始驗證像是mock、monitor、collection等元素

    https://ithelp.ithome.com.tw/upload/images/20221004/20140317aUTrObi2rz.png

    驗證完會發現之前產生的Collection已經跟先前定義的不一樣了,所以會列出有更動的部分,這邊就全選並點擊Confirm Changes to Collection就可以了

    https://ithelp.ithome.com.tw/upload/images/20221004/201403174nWnlK0KUt.png

  • 試發API: 回到工作區Collections分頁可以看到有新增的Collection Cosmos,分別試發兩個API,沒意外的話第二個API會回傳錯誤訊息,只要更改Params裡的cosmoId值就可以了

  • submit: 到這邊就可以嘗試submit來測試今天挑戰是否成功,但今天有兩個submit請求,第一個跟之前的差不多,只要把Cosmos的Collection id填入變數值即可,第二個需要填入今天載入的API id,可以在下圖的地方找到它

    https://ithelp.ithome.com.tw/upload/images/20221004/201403171uOs6sv18A.png

今日回顧

今天嘗試了用Postman去載入OpenAPI定義的API規格,大致上能夠理解統一規範的優點,但要真的能夠運用到實務上,還需要花費好些時間把OpenAPI的規範試過一遍,想要推廣到團隊也是需要經過分享或教學等時間成本,不過至少目前至少體驗過留下了印象,等到時機到,自然就可能繼續深耕了。

那麼今天就到這邊,我們明天見~


上一篇
Postman challenge Day 17 - 可視化 (Visualizations)
下一篇
Postman challenge Day 19 - GraphQL
系列文
[POSTMAN] 該知道的都知道,不知道的慢慢了解 - 與波斯麵三十天的感情培養32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言