#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

Home Page of TIH

點選後的畫面,主要是在說明註冊後透過自動更新的 API,去應用在網頁或是行動裝置的 APP 將使其更多元豐富,助於拓展星國旅遊

About TIH

往下移動,針對不同的使用者,有各自的說明,提供一個大方向的概念,但一個前提,先註冊!最下方會出現一個很大的註冊按鈕

About TIH

🌟 探索開發者網站 — Getting Started

點選 Getting Started,會出現申請的程序及註冊帳戶(Business/Developer account)之間的差異,Business account 可以提供更多的服務給使用者,如擬定旅遊計畫等。若是申請 Developer account 則只需讀到第二點就可以了(橘色框框的部分)。

Getting Started

🌟 探索開發者網站 — API Guides

點選 API Guides,會出現各個分類的 API 文件

API Guildes

例如:API User Guide — Content,進去後看第一段說明,很明確地指出內容分成兩大點:如何提供資料內容給TIH以及使用現有的資料內容
均有詳細的介紹及範例,篇幅也不會太冗長。

頁面上方
頁面下方

🌟 探索開發者網站 — API Products

點選 API Products,會出現 API 的分類,點進去會在拆分成相關的各個小項目

API Products

例如:點選 Content User,會看到一系列分類好的 API 連結及說明

Content User

取得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 在最後一行可以看到完整的網址

Response
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,有時又整個是空的。

來源是 uuid
來源是 url
empty

這裡的做法是把它們都寫成 String

記住 String 很特別,它可以是空字串,還是字串!

解析寫成型別 struct,只有用到 API Get,只需繼承 Decodable :

🌟 uuid 取得影像

利用 url 串接圖片的 API 很簡單,照課堂上的方式做就可以得到影像。
那 uuid 呢?仔細檢視 TIH website,會在 API Products > Media User 的最下方發現可用 uuid 取得媒體的 API

之後就可以利用網址加上 uuid 以及API Key,去取得影像。

可以參考:

希望這篇文章可以幫到正在學習 API 的你,減少一些卡關的時間。

--

--