iT邦幫忙

1

Day9.API 規格草案

  • 分享至 

  • xImage
  •  

前言
今天先把要用到的三個查詢用一頁說明寫清楚,重點是每個查詢的「網址要長怎樣」、「一定要帶哪些欄位」、「回來會有哪些欄位」。先把這三件事定好,明天就能很順地把它轉成正式的 OpenAPI。
所謂「最小可用」,意思是只放一定會用到的基本欄位,先能跑得通、看得懂,再把進階功能留到後面心有餘力的話再加。
沿用既有規則:JSON 小駝峰、URL kebab-case、可讀字串枚舉、時間 ISO 8601+時區、持續時間用秒;對齊用 routeId + stopId(必要時加 direction)。

共用規格(適用三支端點)
•格式:application/json; charset=utf-8
•識別:routeId、stopId 皆為字串;direction=0 去程/1 返程
•時間:updateTime 一律 ISO 8601(含時區),例 YYYY-MM-DDThh:mm:ss+08:00
•狀態字:stopStatus = normal | last | suspended | noData(可讀字串)
•倒數單位:estimateSeconds(整數,秒;顯示層再轉「x 分鐘/即將進站」)

1) GET /bus/routes — 取得路線清單(固定)
用途:取得路線基本資料,供畫面顯示與選擇。
查詢參數(Query)
•city(選)城市或範圍
•keyword(選)路線名稱關鍵字
•page/pageSize(選)分頁(若來源有限制)
回應欄位(精簡)
•routeId(字串)路線識別(跨端點對齊用)
•routeName(物件)routeName.zh/routeName.en
•hasWheelchair(布林)是否可無障礙(若來源提供)
•updateTime(時間)此筆路線資料的更新時間

2) GET /bus/stops — 取得站點清單(固定)
用途:列出「某路線、某方向」的站點清單(站名、座標、站序)。
查詢參數(Query)
•routeId(必)欲查詢的路線識別
•direction(必)0 去程/1 返程
•city(選)城市或範圍(若來源需要)
回應欄位(精簡)
•routeId(字串)對齊用
•direction(數字 0/1)方向
•stops(陣列)站點列表:
•— stopId(字串)站點識別(跨端點對齊用)
•— stopName(物件)stopName.zh/stopName.en
•— lat/lon(數字)座標
•— sequence(數字)站序(從 1 起)
•updateTime(時間)站點清單更新時間

3) GET /bus/eta — 取得到站預估(即時)
用途:回傳「某路線、某站(必要時含方向)」的預估到站時間與狀態,供畫面倒數與提示。
查詢參數(Query)
•routeId(必)路線識別
•stopId(必)站點識別
•direction(選)若雙向共用 stopId,建議一併帶上
回應欄位(精簡)
•routeId(字串)對齊用
•stopId(字串)對齊用
•direction(數字 0/1)方向(若適用)
•estimateSeconds(整數秒)倒數秒數(顯示層轉人話)
•stopStatus(字串)normal/last/suspended/noData
•updateTime(時間)這筆預估的計算時間(ISO 8601、含時區)

欄位一致性與對齊(摘要)
•固定與即時共用同名識別:routeId、stopId、direction。
•時間一律用 updateTime(ISO 8601+時區);比較新舊只看 updateTime。
•倒數一律 estimateSeconds(整數秒);顯示層再轉「x 分鐘/即將進站」。
•名稱來自固定資料(stopName/routeName),即時只提供倒數與狀態。

最小可用規格(MVP)
•用 routeId + stopId(+ direction)把固定與即時確實接起來。
•畫面能顯示:路線號、站名、倒數時間、資料更新時間、狀態字。
•無資料/末班/暫停時,回傳可讀的 stopStatus(不丟 -1/null)。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言