API先拿頭(header)來見API
來記錄一下這一周遇到的事情。
到年底,公司有許多專案都陸續進入客戶驗收階段,所以本周有許多在公司測試機測試過的程式要移到與正式環境相仿的雲端測試機,這也是我這個新手第二次經歷的事情。前一次寫圖台是一個新的專案,有前輩幫忙許多環境的設定,雖然跌跌撞撞,懵懵懂懂,在搞不清楚狀況的情形下,也順利完成任務。
但是年底這次佈署到雲端測試機的幾個專案,都是在既有的專案下新增功能或是修改一些bug,對我而言這是很好的歷練機會,可以看公司前輩之前寫的程式邏輯,還有參考他們的寫作風格,而程式也都在一個月前在測試機測試通過。
But,人生最厲害的就是這個 But。
在公司測試機跑得好好的程式,上了雲端測試環境忽然有些 API 觸發之後回傳沒有授權(401 Unauthorized)的狀態,瀏覽器的開發者工具出現的那一條紅字,讓我有點不知所措,明明在測試機上打 API,都能正確回傳資料。
後來去詢問 Devop 工程師,他說公司測試機環境並沒有認證是哪一個系統在打 API,但是雲端測試環境跟正式環境一定要帶 APP KEY 去跟 API 管控機制請求授權,確認是哪一個系統在打 API,才不會阿貓阿狗發出請求,都回傳資料給對方。
而我新增的那些功能發出 request 的 header 只有帶使用者認證 token,所以雲端測試機的 API 管控機制不給過。
我又去詢問了之前幫我設定 header 的前輩,他說之前有教過我分別設定兩種認證的header寫法(當時我有聽沒有懂),同時詳細解說了兩種認證的差別。並說 header 同時帶使用者身分認證與系統認證並不衝突。
於是這次我搞懂了 API header 的帶法,同時也嘗試了新的做法。目前三個系統已經有一個系統通過測試,剩下兩個系統有前後端版控問題待解,這又是另外一個故事了。
這個禮拜算是地獄周 XD。