iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
Mobile Development

30 天從麻瓜變 Android 工程師系列 第 9

Day 09:RESTful API、JSON

前言


API

API 是程式給程式呼叫的接口,可以是應用程式、資料、裝置之間的接口,比如:

  • 新聞 app 的開發人員串接公司內的 API,來取得新聞列表、文章內容等資訊。
  • 寫一個及時翻譯 app 需要呼叫 Google 翻譯的 API 來取得翻譯結果。
  • 寫一個音樂 app 並將控制邏輯寫成 API,開放給其他智慧音箱的廠商串接控制。

為什麼要寫這篇

我們的確很少需要設計 API,頂多是公司內部參與討論,
但除了離線使用、工具型的 app,
基本上我們都要接 API 來交換及時的、個人化的資料,
所以接下來就強調在應用的部分。

RESTful API


RESTful API 是專指 HTTP 協定下的一種設計方式,
一般 app 的資料都是透過 RESTful API 來跟自己公司的伺服器交換資料,
動作則是分為 CRUD(新增、查詢、修改、刪除)。
例如:

{} 內的東西表示變數,domain 是網域,如:https://www.google.com

  • 新增文章:POST {domain}/article
  • 取得文章:GET {domain}/article/{article id}
  • 修改文章:PUT {domain}/article/{article id}
  • 刪除文章:DELETE {domain}/article/{article id}

POST、PUT 所上傳的文章內容會放在 HTTP request 的 body 裡面,
GET 所得到的文章內容會放在 HTTP response 的 body 裡面,
而不管是 POST 上 server 或是 GET 下 client,目前主流都是 JSON 格式。

應用


手動打 API

有些情境下,我們需要自己手動打 API:

  • 我們不知道是 API 的問題還是自己程式的問題,可以手動打 API 測試,避免一直 build code,浪費時間。
  • 我們想要很快完成很難走到的流程,如:已經完成新增文章功能,卻還沒有實作刪除文章功能,就可以手動打刪除 API。

那要怎麼手動打呢?
在 desktop 中,可以用 Postman,幾個重點功能:

  • 分類。
  • 雲端備份。
  • 切換 domain(公司經常有分內/外部 API 環境)。
  • ...

在 Android 上也有類似軟體,如:Rest Client,臨時需要了解狀況也可以應急。

從 API 拿到的 JSON 很醜

在 Android Studio 中就有 plugin 可以美化。

觀察網頁的 API

圖片中的範例使用 chrome、edge,按下 F12 並切換到 network 的頁簽,
有時候可以從這裡得到一些有用的資訊。

API 文件


比較常見的製作工具如:

雖然我們不用製作 API 文件,
但可以先參考 範例,進公司後才不會慌。

結語


其實公司內部的 API 制定也不是跟我們無關,我們提出這些問題不一定只是利己,可能也是在幫助 server side 做維護。

像是:

  • 以前同一個意義的欄位名稱詞性、時態、單複數等等,都會造成欄位無法共用。
  • 其他 API 都有同一個 JSON object,但這次少了某個欄位,但在之前的情況都不能為空,那也會造成需要多一個 class 來裝資料的情況。

上一篇
Day 08:原則、設計模式、架構
下一篇
Day 10:雲端服務
系列文
30 天從麻瓜變 Android 工程師30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言