Tutorial/Java وSpring Boot

أسعار الصرف في Java وSpring Boot

أنشئ عميل Spring Boot منضبط الأنواع باستخدام RestClient وBigDecimal ومفتاح من البيئة.

MMexchangerate.dev·Jul 17, 2026·قراءة 6 دقائق

يحوّل Spring RestClient استجابة JSON إلى record. استخدم BigDecimal واحتفظ بـsource وmarket_session وdata_updated_at.

Key points
استخدم Spring RestClient.
استخدم BigDecimal للأسعار والمبالغ.
اقرأ المفتاح من EXCHANGERATE_API_KEY.
احفظ data_updated_at مع السعر.

أنشئ RestClient منضبط الأنواع

يحتفظ record بخريطة الأسعار وحقول تفسيرها، ويربط Jackson أسماء snake_case عبر @JsonProperty.

java · ExchangeRateClient.javacopy
package com.example.fx;

import com.fasterxml.jackson.annotation.JsonProperty;
import java.math.BigDecimal;
import java.time.Instant;
import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestClient;

record LatestRates(
    String base,
    String source,
    @JsonProperty("market_session") String marketSession,
    @JsonProperty("data_updated_at") Instant dataUpdatedAt,
    Map<String, BigDecimal> rates
) {}

@Component
public final class ExchangeRateClient {
  private final RestClient client;

  public ExchangeRateClient(
      RestClient.Builder builder,
      @Value("${exchangerate.api-key}") String apiKey
  ) {
    this.client = builder
        .baseUrl("https://api.exchangerate.dev/v1")
        .defaultHeader(HttpHeaders.AUTHORIZATION, "Bearer " + apiKey)
        .build();
  }

  public LatestRates latest(String base) {
    return client.get()
        .uri("/latest/{base}?symbols=EUR,GBP", base)
        .retrieve()
        .body(LatestRates.class);
  }
}

حمّل المفتاح من البيئة

yaml · application.yamlcopy
exchangerate:
  api-key: ${EXCHANGERATE_API_KEY}

تعامل مع الحداثة والأخطاء بوضوح

يرمي RestClient.retrieve() خطأ عند 4xx و5xx. ضع مهلة محدودة، وأعد فقط الأخطاء المؤقتة. يتطلب 401 إصلاح المفتاح، و429 خفض الطلبات.

حافظ على BigDecimal في الحساب
احتفظ بدقة السعر كاملة، وقرّب المبلغ النهائي فقط حسب العملة.
  • أعد استخدام عميل واحد.
  • ضع مهلة اتصال وقراءة.
  • خزّن النجاح فقط.
  • احفظ المصدر ووقت البيانات.
MM
exchangerate.dev
أدلة تكامل للمطورين العاملين مع بيانات العملات.

Keep reading

Guideسلسلة أسعار تاريخية في طلب واحدRead Referenceقراءة source وmarket_sessionRead Guideالسعر الاسترشادي والتنفيذيRead