Mediastack ve Exchangerate. IO API'leri kullanırken veri çekilmiyor

ExE.1

Hectopat
Katılım
6 Nisan 2021
Mesajlar
586
Ne yaparsam yapayım web scraping olmuyor bir türlü. Haber sitesi açacağım ve bunun için mediastack ile exchangerate. IO'dan API anahtarları aldım. Bu API anahtarlarını doğru kullansam bile nedense verileri çekemiyor. Mesela güncel döviz kurlarını exchangerate. IO ile çekeceğim ama çekemiyor. Her türlü kütüphaneyi indirdim; axios, cheerio, dotenv gibi şeyleri de yükledim. Var mıdır bilen? Kodlar çok uzun ama isteyen olursa buradan paylaşabilirim.
 
Fetch requesti nasil attigini ve aldigin yaniti paylasman yeterli. Butun kodlar lazim degil.
Kod:
require('dotenv').config();
const axios = require('axios');
async function fetchRates() {
  try {
    const [usdRes, eurRes, gbpRes] = await Promise.all([
      axios.get('https://api.exchangerate.host/convert', { params: { from: 'USD', to: 'TRY' } }),
      axios.get('https://api.exchangerate.host/convert', { params: { from: 'EUR', to: 'TRY' } }),
      axios.get('https://api.exchangerate.host/convert', { params: { from: 'GBP', to: 'TRY' } })
    ]);

Hiç bir şekilde siteye yansıyan bir kur değeri yok.
 
Son düzenleme:
Neden API key'ini gondermiyorsun?
Spesifik olarak not dusmusler oraya da;
1754475816946.png

Ek olarak amount gondermek zorundasin.
1754476116804.png


Mesela ben test ettigimde;
1754477460899.png

(Access keyi kaldirdim. accessKey yazan yerde senin keyin olmali.)

Yada axios ile;
Screenshot 2025-08-06 at 2.33.07 PM.png


Ek olarak boyle bir kullanimlari da varmis;

Uc defa istek atmak yerine, tek istekle hepsini getirebiliyorsun. Birincisi daha cost effective. Her kur icin ayri istege gerek kalmiyor.
Gelen yanit;
JSON:
{
    "success": true,
    "terms": "https://currencylayer.com/terms",
    "privacy": "https://currencylayer.com/privacy",
    "timestamp": 1754476575,
    "source": "TRY",
    "quotes": {
        "TRYUSD": 0.024592,
        "TRYEUR": 0.02121,
        "TRYGBP": 0.018478
    }
}

Cikan TRYUSD degerini 1'e bolersen USD -> TRY degerini elde edersin.
Ornegin; 1 / 0.024592 = 40.6636304489.

axios ile;
JavaScript:
const response = await axios.get('https://api.exchangerate.host/live', { params: { access_key: accessKey, source: 'TRY', currencies:'USD,EUR,GBP' } });

response.data;
Screenshot 2025-08-06 at 2.46.30 PM.png
 
Son düzenleme:
Kod:
async function fetchRates() {
  try {
    const [usdRes, eurRes, gbpRes] = await Promise.all([
      axios.get('https://api.exchangerate.host/convert?from=', { params: { from: 'USD', to: 'TRY', amount:1, access_key:process.env.EXCHANGE_RATE_API_KEY } }),
      axios.get('https://api.exchangerate.host/convert?from=', { params: { from: 'EUR', to: 'TRY', amount:1, access_key:process.env.EXCHANGE_RATE_API_KEY } }),
      axios.get('https://api.exchangerate.host/convert?from=', { params: { from: 'GBP', to: 'TRY', amount:1, access_key:process.env.EXCHANGE_RATE_API_KEY } })
    ]);
Amount gönderdim ve API keyi de görmesini sağladım ama hala aynı.
 
Kodda istekten gelen yanitlari nasil islediginizi kontrol edin. Orda da bi hata vardir muhtemelen. O kismi da paylasirsaniz bakalim. Bir de console'dan errorlari kontrol ettiniz mi?

Bir de simdi fark ettim, son yanitta ?from= diye eklemissiniz URL'e. Onu da kaldirin. Query parametrelerini zaten sagdaki mapten alacak. Axios orneklerinde onu gostermistim;
1754478105117.png
 
Consolda network kısmında javascript dosyasının istekleri gitmiyor. Sadece siteye eklediğim ekonomi, gündem gibi basılabilen sekmelerin istekleri gidiyor. Ayrıca consol kısmına hiç bir hata mesajı falan gelmiyor. Büyük ihtimalle kodu çalıştırmıyor bile.
 

Technopat Haberler

Geri
Yukarı