iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 15
1
Modern Web

我每天都接一個API系列 第 15

[30apis] Day 14 : Coinbase API (匯率轉換)

之前寫了一個匯率轉換 API 的文章(Fixer API**),**但寫到最後發現,居然沒有台幣的匯率啊。今天研究了 Coinbase API,赫然發現除了使用 Coinbase 平台的服務以外,裡面就已經有各國匯率的 API,還有比特幣、以太幣、萊特幣等等的匯率資料。

在那之前,先簡單介紹一下 Coinbase 這個服務。
Coinbase 是一個加密貨幣交易平台,讓使用者可以在上面設定電子錢包,買賣加密貨幣跟使用加密貨幣收款。

不過我個人對於加密貨幣沒有什麼了解,而且台灣似乎沒辦法使用 Coinbase 這個平台,今天就稍微看看 Coinbase API 能夠做到什麼,以及使用他的換匯 endpoint。

從文件上可以看到,Coinbase API 可以做到的事情還挺多的。比方說

  • 創建比特幣、比特幣現金、以太幣、萊特幣的錢包跟地址
  • 交易以上這些加密貨幣
  • 存放這些加密貨幣
  • 取得即時跟歷史交易金額資料
  • 取得 coinbase 交易通知
  • 用比特幣收款

這些功能都在 Coinbase 提供的三種 endpoints 裡,分別是

  • Wallet Endpoints
  • Merchants Endpoints
  • Data Endpoints

Coinbase 提供兩種 authentication 方法,

  • 使用 API key 來取得跟自己相關的資訊
  • 使用 OAuth 來開發給 Coinbase 使用者的 APP

Data endpoint 是不需要 authentication 的,等下會來實作。

要注意的一點,即使是不需要 authentication 的 endpoint,也不是直接放入 request URL 就好。
所有的 request 都必須設定一個 CB-VERSION 的 header,與之對應的 value 要輸入一個版本,使用的格式是時間的 YYYY-MM-DD

xhr.setRequestHeader('CB-VERSION','2018-01-01')

如果沒有設定這個 header , API Request 就會失敗。

那現在來使用一下他的 Data Endpoints
在這邊可以抓到

  • currencies : 所有貨幣的資料
  • exchange-rates:現在的匯率,default 是 USD,會得到所有其他貨幣匯率
  • prices:比特幣及以太幣的買進、賣出價格
  • time:API Server 時間

那我就簡單地寫個顯示比特幣對美金跟台幣的匯率的APP。

var currency = "BTC";
var url = "https://api.coinbase.com/v2/exchange-rates?currency=" + currency;
var usd = document.querySelector(".usd");
var twd = document.querySelector(".twd");
function makeRequest() {
  xhr = new XMLHttpRequest();

  xhr.onload = function() {
    var response = JSON.parse(this.responseText);
    usd.innerHTML = response.data.rates.USD + " USD";
    twd.innerHTML = response.data.rates.TWD + " TWD";
  };
  xhr.open("GET", url, true);
  xhr.setRequestHeader("CB-VERSION", "2018-01-01");
  xhr.send();
}
makeRequest();

CodePen 連結


上一篇
[30apis] Day 13 : Google Calendar API
下一篇
[30apis] Day 15 : Giphy API
系列文
我每天都接一個API30

尚未有邦友留言

立即登入留言