冒险村29 - API - exchange_rate

29 - API - exchange_rate

本次范例以 exchangerate-api 为例,需要先注册信箱并有 key 才可以使用。

Usage

Net:HTTP Ruby 内建 Library 为例

  uri = URI('http://example.com/some_path?query=string')

  Net::HTTP.start(uri.host, uri.port) do |http|
    request = Net::HTTP::Get.new uri
    response = http.request request # Net::HTTPResponse object
  end

Setting Headers

  uri = URI('http://example.com/cached_response')
  file = File.stat 'cached_response'

  req = Net::HTTP::Get.new(uri)
  req['If-Modified-Since'] = file.mtime.rfc2822

注: 详细可参考 https://ruby-doc.org/stdlib-3.0.2/libdoc/net/http/rdoc/Net/HTTP.html

Example

接下来,我们用 exchangerate 汇率交易的 api,以最新的美金汇率换算为例,EXCHANGE_RATE_APP_ID 设定在环境变数内,为 exchangerate-api 提供的 secret_key(别直接写在 code 内 commit 惹~)

另外也可以将连结放入前几篇介绍的 config 内,这边的 Settings.exchange_rates_api,也就是 "https://v6.exchangerate-api.com/v6",透过 GET 得到 API response。

  uri = URI(Settings.exchange_rates_api + "/#{ENV["EXCHANGE_RATE_APP_ID"]}/latest/USD")

  Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
    req = Net::HTTP::Get.new uri.request_uri
    res = http.request(req)
  end

就马上可以获得 exchange_rate 啦!

{
  "result": "success",
  "documentation": "https://www.exchangerate-api.com/docs",
  "terms_of_use": "https://www.exchangerate-api.com/terms",
  "time_last_update_unix": 1634169602,
  "time_last_update_utc": "Thu, 14 Oct 2021 00:00:02 +0000",
  "time_next_update_unix": 1634256002,
  "time_next_update_utc": "Fri, 15 Oct 2021 00:00:02 +0000",
  "base_code": "USD",
  "conversion_rates": {
    "USD": 1,
    "AED": 3.6725,
    "AFN": 84.9745,
    "ALL": 105.0810,
    "AMD": 478.1197,
    "ANG": 1.7900,
    "AOA": 601.0158,
    "ARS": 98.9610,
    "AUD": 1.3572,
    "AWG": 1.7900,
    "AZN": 1.6973,
    "BAM": 1.6887,
    "BBD": 2.0000,
    "BDT": 85.5464,
    "BGN": 1.6896,
    "BHD": 0.3760,
    "BIF": 1983.1474,
    "BMD": 1.0000,
    "BND": 1.3523,
    "BOB": 6.8897,
    "BRL": 5.5301,
    "BSD": 1.0000,
    #...
  }
}

另外也可以先透过 Postman 来打试试看,只要直接将网址丢在上方即可马上获得。

参考资料


<<:  会议

>>:  [day29]优化架构-订单留存及检核(2)

案例:在AWS上透过SageMaker跟CodePipeline驾驭MLOps的参考架构(上)

在经历了几篇的MLOps基础概念之後,想在後面的文章带大家看看几个案例。透过案例来学习,会对专案在技...

铁人赛 Day17 -- 搞了这麽多天,来试着做会员登入介面吧

今日目标 : 不罗嗦,直接附上Code css .login{0 background-color:...

基础建设: 系统监控与告警

系统架构 系统监控是维护资源可靠性、可用性与效能的重要环节。 指标计算 即时计算:即时的本地服务指标...

Day 28. 组件基础 - Components

沃呜!铁人倒数3天了,我们离完赛就差一颠点啦,我们今天来讲讲components吧~继续gogogo...

Day 0x5 UVa10062 Tell me the frequencies!

Virtual Judge ZeroJudge 题意 对每一列输入,输出各字元的 ASCII &a...