Spring RestClient JSON yanıtını Java record içine eşler. Kurları BigDecimal olarak tutun, anahtarı yapılandırmadan alın ve source, market_session, data_updated_at alanlarını koruyun.
Önemli noktalar
Spring
RestClient kullanın.Kur ve tutarlarda
BigDecimal kullanın.Anahtarı
EXCHANGERATE_API_KEY üzerinden alın.data_updated_at alanını kurla saklayın.Tipli RestClient oluşturun
Record kur haritasını ve yorumlama alanlarını korur. Jackson, snake_case adlarını @JsonProperty ile eşler.
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);
}
}Anahtarı ortamdan yükleyin
exchangerate:
api-key: ${EXCHANGERATE_API_KEY}Güncellik ve hataları açıkça işleyin
RestClient.retrieve() 4xx ve 5xx yanıtlarında hata verir. Sınırlı zaman aşımı belirleyin, yalnızca geçici hataları yineleyin. 401 anahtar düzeltmesi, 429 trafik azaltımı gerektirir.
Hesap boyunca BigDecimal kullanın
Kuru tam hassasiyette tutun ve yalnızca nihai tutarı hedef para birimine göre yuvarlayın.
- Bir istemciyi yeniden kullanın.
- Bağlantı ve okuma zaman aşımını belirleyin.
- Yalnızca başarıyı önbelleğe alın.
- Kaynak, marketSession ve dataUpdatedAt alanlarını kurla birlikte saklayın.
ER
exchangerate.dev
FX verileriyle çalışan geliştiriciler için entegrasyon rehberleri.
