exchangeratesapi.io APIから為替の全レートを取得する


はじめに

@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.

Frequently Asked Questions

今回の取得方法の場合、全レートを取得してもリクエストのカウントは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から取得した通貨同士のレートを求めています。