[心得] 使用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