Eğitim/Ruby on Rails için döviz kuru API’si

Ruby on Rails için döviz kuru API’si

Ruby on Rails için döviz kuru API’si. Kod, önbellek ve güncellik meta verisi içeren uygulamalı kılavuz.

ERexchangerate.dev·Sep 20, 2026·7 dakikalık okuma

Kimlik bilgilerini açığa çıkarmadan sunucuda uygulayın; kaynak ve gözlem zamanını koruyun.

Önemli noktalar
API anahtarını sunucuda tutun.
Para birimi kodlarını ve tutarları doğrulayın.
Başarılı yanıtları önbelleğe alın.
Kaynağı ve gözlem zamanını gösterin.

Adım 1

Kod örneğicopy
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

Adım 2

Kod örneğicopy
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

Adım 3

Sunucuda çalıştırın, girdileri doğrulayın ve yanıt meta verisini saklayın.

Adım 4

Sunucuda çalıştırın, girdileri doğrulayın ve yanıt meta verisini saklayın.

Kılavuz
Bu kurlar gösterge niteliğindedir, mutabakat fiyatı değildir.
ER
exchangerate.dev
Döviz verisi kullanan geliştiriciler için kılavuzlar.

Okumaya devam edin

KılavuzGeliştiriciler için para birimi dönüştürme API’siOku KılavuzExchange rates for accounting softwareOku