#38 串接 TIH API - TIH 介紹
星國官方旅遊 API、取得 JSON及解析 JSON
在尋找練習串接 API 的題材時,赫然發現新加坡旅遊局提供免費註冊就可以使用 Tourism Information & Services Hub (TIH) 所提供的 API
本篇著重在 API 題材介紹、取得其 JSON及解析 JSON
星國官方旅遊 API
🌟 註冊 & 取得API Key
從首頁就可以發現,官方提供的 API 好像很豐富
點選註冊後會出現三個選項:
Public(公眾)、Developers(開發者)及Businesses(公司企業)
現階段是點選 Developers,之後表格不會太冗長,大約三分鐘就可以完成整個註冊過程,最後 e-mail 就會收到 API Key 囉!
🌟 Developer Portal (開發者網站)
登入後,點選網頁右上角的人像 icon,就會出現綠色字樣的 Developer Portal,點選後就會進入開發者網站
開啟後,發現 API 的頁面很簡潔,網頁上方橫排的選項可以看到 API 及其文件跟導覽介紹,還有關於 TIH 及新聞的介紹
往下移動,發現這個 API 網頁不只可以下載(API Get),還支援更新,但需進一步研究。
🌟 探索開發者網站 — About TIH
從最左邊的選項開始探索這個網站,點選 About TIH
點選後的畫面,主要是在說明註冊後透過自動更新的 API,去應用在網頁或是行動裝置的 APP 將使其更多元豐富,助於拓展星國旅遊
往下移動,針對不同的使用者,有各自的說明,提供一個大方向的概念,但一個前提,先註冊!最下方會出現一個很大的註冊按鈕
🌟 探索開發者網站 — Getting Started
點選 Getting Started,會出現申請的程序及註冊帳戶(Business/Developer account)之間的差異,Business account 可以提供更多的服務給使用者,如擬定旅遊計畫等。若是申請 Developer account 則只需讀到第二點就可以了(橘色框框的部分)。
🌟 探索開發者網站 — API Guides
點選 API Guides,會出現各個分類的 API 文件
例如:API User Guide — Content,進去後看第一段說明,很明確地指出內容分成兩大點:如何提供資料內容給TIH以及使用現有的資料內容
均有詳細的介紹及範例,篇幅也不會太冗長。
🌟 探索開發者網站 — API Products
點選 API Products,會出現 API 的分類,點進去會在拆分成相關的各個小項目
例如:點選 Content User,會看到一系列分類好的 API 連結及說明
取得JSON
實際點選一個 API - Search Accommodation By Keyword or UUIDs
進去後,會看到第一個欄位是 Resource URL,是 base URL,就是 API 網址的前面固定的部分
往下的欄位會變成參數跟 Resource URL ,用 ? 隔開,組成 API 完整的網址,參數包含關鍵字、過濾特定來源、排序、筆數等,至少需填寫有 require 的部分。(這裡示範是選 searchType: keyword,searchValue: city)
移到網頁下方,輸入API Key,就可按下 SEND 發送到 server
之後可以在 Response 看到 HTTP code ,若是200就是請求有效,其餘可參考下方說明。
點到右邊的 cURL 在最後一行可以看到完整的網址
🌟 Postman、 JSON Editor Online 登場
把 API 網址及 API Key 輸入 Postman,就可以取得完整的 JSON
把 JSON 複製出來,放在 JSON Editor Online 也可以,會更容易看懂它的架構一些
之後就可以開始解析 JSON了!
解析 JSON
🌟 有些項目只出現一半
解析 JSON 只需解析有用到的項目即可,APP 需要用到哪裡就解到哪裡就好。
特別需要注意到是:它的 JSON 沒有長得很工整。
記得在解析 JSON 時,若是一個項目有時出現,有時消失,那就加上問號,讓它變成 optional 就好。
但若是只出現一半呢?冒號前面(Key)有東西,冒號後面(Value)有時有東西,有時是空的。
例如它的 image 項目,有時來源是 uuid,有時是 url,有時又整個是空的。
這裡的做法是把它們都寫成 String
記住 String 很特別,它可以是空字串,還是字串!
解析寫成型別 struct,只有用到 API Get,只需繼承 Decodable :
🌟 uuid 取得影像
利用 url 串接圖片的 API 很簡單,照課堂上的方式做就可以得到影像。
那 uuid 呢?仔細檢視 TIH website,會在 API Products > Media User 的最下方發現可用 uuid 取得媒體的 API
之後就可以利用網址加上 uuid 以及API Key,去取得影像。
可以參考:
希望這篇文章可以幫到正在學習 API 的你,減少一些卡關的時間。