شرح عملي/واجهة أسعار الصرف لـ Ruby on Rails

واجهة أسعار الصرف لـ Ruby on Rails

واجهة أسعار الصرف لـ Ruby on Rails. دليل عملي يتضمن الشفرة والتخزين المؤقت وبيانات الحداثة.

ERexchangerate.dev·Sep 20, 2026·7 دقائق للقراءة

نفّذ التكامل على الخادم دون كشف بيانات الاعتماد، واحتفظ بالمصدر ووقت الرصد.

نقاط أساسية
احتفظ بمفتاح API على الخادم.
تحقق من رموز العملات والمبالغ.
خزّن الاستجابات الناجحة مؤقتًا.
اعرض المصدر ووقت الرصد.

الخطوة 1

مثال برمجيcopy
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

الخطوة 2

مثال برمجيcopy
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

الخطوة 3

نفّذ هذا النمط على الخادم، وتحقق من المدخلات، واحتفظ ببيانات الاستجابة.

الخطوة 4

نفّذ هذا النمط على الخادم، وتحقق من المدخلات، واحتفظ ببيانات الاستجابة.

دليل
هذه أسعار إرشادية وليست أسعار تسوية.
ER
exchangerate.dev
أدلة عملية للمطورين الذين يستخدمون بيانات العملات.

تابع القراءة

دليلواجهة تحويل العملات للمطوريناقرأ دليلExchange rates for accounting softwareاقرأ