はじめに
@itTkmさんの
@ittkm/exchangeratesapiを使用してフリープラン(リクエスト上限 1000/月)で取得します。
What is an API Request?
Pricing is based on the number of monthly API Requests offered for each individual Subscription Plan. Accessing any type of exchangeratesapi.io forex data using a valid API Access Key counts as one "API Request". Unlike most other providers, any API Endpoint or feature requested (including Time-Frame & Currency-Change Queries, as well as requesting multiple currencies at once) counts as only one API Request.
今回の取得方法の場合、全レートを取得してもリクエストのカウントは1です。
全レート取得
currencyExchange(とutilities)は公開されていない関数なので@ittkm/exchangeratesapiリポジトリからコピペするか、公開するように修正したフォークリポジトリからインストールしてください。
import {exchangeratesapi, IExchangeratesapiResponse, utilities} from "@ittkm/exchangeratesapi";
const {currencyExchange} = utilities;
// const api = new exchangeratesapi(exchangeratesapiKey);
// const result:IExchangeratesapiResponse = await api.latest();
if (result.success) {
const ratePairs:any = {};
const rates = result.rates;
const rateKeys = Object.keys(rates);
rateKeys.forEach((key)=>{
const newBase = rates[key];
rateKeys.forEach((newKey)=>{
const symbol = rates[newKey];
ratePairs[key+newKey] = currencyExchange(newBase, symbol);
});
});
console.log(ratePairs); //-> "{"AEDAED":1,"AEDAFN":23.927648,"AEDALL":30.172867,"AEDAMD":133.105265,"AEDANG":0.490964,"AEDAOA":124.060"...
}
クロスレートでexchangeratesapi.ioから取得した通貨同士のレートを求めています。