Tutorial/API kurs untuk Ruby on Rails

API kurs untuk Ruby on Rails

API kurs untuk Ruby on Rails. Panduan praktis dengan kode, cache, dan metadata kesegaran.

ERexchangerate.dev·Sep 20, 2026·7 menit baca

Terapkan di server tanpa membocorkan kredensial serta simpan sumber dan waktu observasi.

Poin utama
Simpan kunci API hanya di server.
Validasi kode mata uang dan jumlah.
Cache respons yang berhasil.
Tampilkan sumber dan waktu observasi.

Langkah 1

Contoh kodecopy
require "net/http"
require "json"

class ExchangeRateClient
  Error = Class.new(StandardError)

  def convert(from:, to:, amount:)
    from = from.to_s.upcase
    to = to.to_s.upcase
    raise Error, "invalid currency code" unless [from, to].all? { |code| code.match?(/A[A-Z]{3}z/) }

    key = ["fx-convert", from, to, amount.to_d.to_s("F")]
    Rails.cache.fetch(key, expires_in: 60.seconds) do
      uri = URI("https://api.exchangerate.dev/v1/convert/#{from}/#{to}/#{amount}")
      request = Net::HTTP::Get.new(uri)
      request["Authorization"] = "Bearer #{ENV.fetch("EXCHANGERATE_API_KEY")}" 

      response = Net::HTTP.start(uri.host, uri.port, use_ssl: true,
        open_timeout: 2, read_timeout: 5) { |http| http.request(request) }
      raise Error, "exchange-rate API returned #{response.code}" unless response.is_a?(Net::HTTPSuccess)
      JSON.parse(response.body)
    end
  rescue Net::OpenTimeout, Net::ReadTimeout => error
    raise Error, "exchange-rate API timed out: #{error.class}"
  end
end

Langkah 2

Contoh kodecopy
class ConversionsController < ApplicationController
  def show
    amount = BigDecimal(params.require(:amount))
    result = ExchangeRateClient.new.convert(
      from: params.require(:from).upcase,
      to: params.require(:to).upcase,
      amount: amount
    )
    render json: result.slice("from", "to", "amount", "rate", "converted",
      "source", "market_session", "data_updated_at")
  rescue ExchangeRateClient::Error, ArgumentError => error
    render json: { error: error.message }, status: :bad_gateway
  end
end

Langkah 3

Jalankan di server, validasi input, dan simpan metadata dari respons.

Langkah 4

Jalankan di server, validasi input, dan simpan metadata dari respons.

Panduan
Kurs ini bersifat indikatif, bukan harga penyelesaian.
ER
exchangerate.dev
Panduan praktis bagi pengembang yang menggunakan data mata uang.

Baca selanjutnya

PanduanAPI konverter mata uang untuk pengembangBaca PanduanExchange rates for accounting softwareBaca