[心得] 使用Claudia.js建立查詢台銀匯率API/BOT

作者: ichico (細雪。)   2016-12-21 20:40:27
之前分享了如何製作簡單的Facebook BOT,詳情請a我的文章或是看好讀blog
http://kaoruiscoding.blogspot.tw/2016/12/claudiajsfacebook.html
但是應該不會有人希望自己的BOT只會找理由吧。
而且Lambda的最大應用其實是Web API,
而Claudia其實也是可以幫忙建立API的,一樣是很輕鬆愉快喔~
這篇文章會介紹如何用Claudia寫一隻自動抓取台銀最新的現金賣出匯率,
並轉成JSON格式的API,再建立一個機器人並讓機器人自動回覆匯率。
一樣有無廣告無音樂blog好讀版,依然要請各位年薪千萬大大手下留情
http://kaoruiscoding.blogspot.tw/2016/12/claudiajsapi-botskype.html
建立API
初始化npm專案
1.建立一個資料夾並命名為currencyrate
2.打開Mac Terminal/Windows command line tool
並移動到這個資料夾(cd currencyrate)
3.初始化npm專案:輸入npm init
安裝套件
如果之前選擇不將Claudia安裝到Global,要在這個步驟打入
npm install claudia -D
來安裝Claudia到這個專案。
另外還必須要安裝幾個npm套件:
claudia-api-builder:Claudia自動部署API的套件
minimal-request-promise:很簡單就可以取得網頁上資料的套件
csv-parse:因為台銀提供csv檔格式的API,這個套件可以解析csv檔
在Terminal或是Cmd輸入
npm install claudia-api-builder minimal-request-promise csv-parse -S
即可安裝這兩個套件。
API的Code
打開你的sublime或是其他的記事本工具,輸入以下的code:
'use strict'
const parse = require('csv-parse/lib/sync');
const rp = require('minimal-request-promise')
const ApiBuilder = require("claudia-api-builder");
var api = new ApiBuilder();
var rootUri = 'http://rate.bot.com.tw/';
var currencyMethod = 'xrt/flcsv/0/day';
var sellcashcol=12;
var currencyCode=0;
api.get("/currency/{code}", function (message) {
var code = message.pathParams.code;
var errorMessage,sellcash;
var returnData={errorMessage:errorMessage,sellcash:sellcash};
return rp.get(rootUri+currencyMethod)
.then(response => {
var body='#'+response.body;
var records = parse(body, {comment: '#'});
var arrayFound = records.filter(function(item) {
return item[currencyCode].toLowerCase()==code.toLowerCase();
});
if (arrayFound.length>0)
{
returnData.sellcash=arrayFound[0][12];
}else{
returnData.errorMessage='Cannot find any currency from code '+code
}
return returnData;
})
});
module.exports = api;
然後儲存成index.js。
這段Code會到台銀網站提供的API取得匯率,
透過csv-parser解析之後取得目標匯率並回傳。
透過Claudia部署
透過Claudia部署,一樣只要一個指令
claudia create
作者: dnabossking (少狂)   2016-12-21 21:37:00
作者: joaner77 (唯心而已矣)   2016-12-21 21:56:00
作者: drajan (EasoN)   2016-12-21 22:11:00
謝啦
作者: wddx (i7MOMO)   2016-12-21 22:47:00
謝謝大大分享
作者: abcggg (小雞逼逼)   2016-12-22 01:20:00
寫的好清楚 感謝分享!
作者: bcew (bcew)   2016-12-22 09:04:00
推強者
作者: ian90911 (xopowo)   2016-12-22 09:30:00
推分享
作者: jjwei ( <囧> )   2016-12-22 11:41:00
push!
作者: SYC1205 (SYC)   2016-12-24 08:37:00
超讚

Links booklink

Contact Us: admin [ a t ] ucptt.com