如何利用 Heroku 和 Flask 製作台北市U-Bike API(一)前置作業

朋友丟了某公司的測驗題目過來,看起來很有趣就做了一下.題目是利用 Heroku 製作一個輸入經緯度就可以查詢 UBike 站點的API.平常習慣把服務架在 server 上,剛好趁這個機會體驗一下 Heroku 的服務.

前置作業:

1.資料來源:既然是要即時查詢UBike,當然就是從開放資料裡面找看看.台北市目前的公共自行車即時資訊一分鐘更新一次,裡面包含了自行車站點,經緯度,車輛空位數等,是主要的資料來源.

YouBike臺北市公共自行車即時資訊
http://data.taipei/opendata/datalist/datasetMeta?oid=8ef1626a-892a-4218-8344-f7ac46e1aa48

2. 地圖API:因為題目需要判斷輸入的經緯度在不在台北,就需要先知道台北市邊界的經緯度.一種方法是直接抓台北市的經緯度下來判斷,但是 Google 大神有開放地圖 API,雖然免費帳號有限制查詢量,不過在這裡也不會遇到這個問題,就直接拿來用.不過這個 API 傳回資料要解析的時候有點雷…之後會解釋.

Google Map API
https://developers.google.com/maps/documentation/geocoding/start

3. Flask on Heroku:Heroku 的範例是用 Django ,但是一個 API 不需要那麼複雜的架構,所以選擇輕量級的 Flask 來用,一些設定一開始是參考 https://github.com/zachwill/flask_heroku,網路上也有其他文章可以找.

4. Database:在想資料要放在哪的時候,剛好 Flask 提供了免費的 Postgre-SQL 可以用,就自然把資料丟在裡面.初步想建立兩個表,一個是站點的基本資料,裡面包括站點經緯度,站點名稱,站點代號,不需要太常更新(一天更新一次);另外一個表可以放站點代號和車位資訊,每分鐘更新一次.雖然說資料很小好像不用這樣子做也可以,但還是假設資料量會很多的情況來處理好了XD

確認好這些資料來源和基本框架後,就可以著手來寫 API 了!