iPhone app 與 Web service 的溝通良好關鍵在 API 設計
API |
API (Application programming interface) 是一個特定的規則讓軟體開發雙方可以存取使用些服務,只要透過 API 溝通,Server side 可以選擇任何語言開發,而我們 iPhone app 則可以用 Objective-C 搭配 API 溝通的 Library 來連接。而在像是 Web development 上,API 是定義 Hypertext Transfer Protocol (HTTP) request 訊息,包含傳輸的內容,而內容格式通常會使用 Extensible Markup Language (XML) 或者 JavaScript Object Notation (JSON) 格式。而當這樣的形式來規劃平台即可做出 web service。
所以要設計出整個合作服務,我們需要的要件有:
- API 文件。此來描述 API 長相,會有哪些開放的 Request URL,會需要傳送哪些 parameter 當作條件,會回傳哪些資料,內容的 key value 的長相。
- API 內容格式。是採用 XML 還是 JSON,內容會是長怎麼樣子,這些影響到 iPhone app 解析上所需採用的相關 Library。
- API Key。申請 API key 可以讓 Server 在處理網路外在呼叫進來所代表的身分,是來自登記哪一方的。這樣可以作為是否合法登記與授權過的信任來源。身為 Client 的 iPhone app 要當個好的公民,呼叫 API 也要呼叫的有禮,夠用的 Request 即可,不要造成自己網路負擔之外,也造成 Server 端的負擔。Server 端設計上也可以去紀錄哪些 request 是由哪些登記的 API_KEY 進來的,這樣在查不好的存取時,可以做出追蹤與查明原因。
- 登入機制。每一家的 Web service 提供的登入機制都不同,身為開發 client 端的 iPhone app 要瞭解,這樣才能進行登入後後續的 API 操作。
在 iPhone app project 的設計規劃:
- 如果今日 Web service 的 API 已經訂好,那麼我們在開發上 Data object 設計盡量以 Web service 回傳的內容格式的 key 為主,這樣開發上比較不會造成 naming 的誤解。所以我們在開發網路 Request 那邊程式僅需做好溝通與將內容資料轉換,塞進我們的 NSObject 讓 iPhone app 其他的程式 layer 使用即可。
- 我們在 View Controller 或者是 Data source 的相關程式就可以依照我們自己來設計,專注做出自己想要的形式。
一份良好的 API 設計,可以讓我們 iPhone app 在操作上行雲如流水,資料接的天衣無縫,讓 iPhone app 操作起來非常愉悅之於,資料也會很豐富的呈現在使用者眼前。
Dear Edward
ReplyDelete能否請教在使用者同意提供資料後
iOS要持續和web service持續傳送/接收資料
你是利用web service或socket的方式呢?
謝謝
Dear 李先生,
ReplyDelete建議採用 Web service 的 RESTful 方式,這方面在實作上搭配 http 的 methods (GET/POST) 等,伴隨各種 url 加上參數,即可取得資料和傳遞資料了。
Edward
Dear Edward
ReplyDeletethank you,
我這程式有點像每10秒上傳一次資料
剛剛去下載asihttprequest api來用用看
謝謝你