Ha a kérések sikertelenek, a módszeres hibakeresés segít gyorsan azonosítani a problémát.
async function debugRequest(url, options) {
console.log('=== API Request ===");
console.log('URL:', url);
console.log('Method:', options.method);
console.log('Headers:', {
...options.headers,
'x-api-key': options.headers['x-api-key']?.substring(0, 10) + '...'
});
console.log('Body:', options.body);
const startTime = Date.now();
try {
const response = await fetch(url, options);
const duration = Date.now() - startTime;
console.log('=== API Response ===");
console.log('Status:', response.status, response.statusText);
console.log('Duration:', duration + 'ms');
console.log('Headers:', Object.fromEntries(response.headers));
const data = await response.json();
console.log('Body:', data);
return { response, data };
} catch (error) {
console.error('=== Request Failed ===");
console.error('Error:', error.message);
console.error('Duration:', Date.now() - startTime + 'ms');
throw error;
}
}
Először ezeket ellenőrizze
async function debugRequest(url, options) {
console.log('=== API Request ===");
console.log('URL:', url);
console.log('Method:', options.method);
console.log('Headers:', {
...options.headers,
'x-api-key': options.headers['x-api-key']?.substring(0, 10) + '...'
});
console.log('Body:', options.body);
const startTime = Date.now();
try {
const response = await fetch(url, options);
const duration = Date.now() - startTime;
console.log('=== API Response ===");
console.log('Status:', response.status, response.statusText);
console.log('Duration:', duration + 'ms');
console.log('Headers:', Object.fromEntries(response.headers));
const data = await response.json();
console.log('Body:', data);
return { response, data };
} catch (error) {
console.error('=== Request Failed ===");
console.error('Error:', error.message);
console.error('Duration:', Date.now() - startTime + 'ms');
throw error;
}
}1. Az API-kulcs helyes:
console.log('API key starts with:', apiKey.substring(0, 10));
console.log('API key length:', apiKey.length);
2. A fejléc neve pontos:
// A 'x-api-key' kisbetűsnek kell lennie
headers: {
'x-api-key': apiKey, // ✓ Helyes
'X-API-Key': apiKey, // ✗ Rossz
'api-key': apiKey, // ✗ Rossz
}
3. A JSON érvényes:
try {
const body = JSON.stringify({ query: 'test' });
console.log('Valid JSON:', body);
} catch (e) {
console.error('Invalid JSON:', e);
}
4. A kérés eljut a szerverhez:
// Használja a böngésző DevTools „Network” (Hálózat) lapját, vagy
curl -v -X POST https://api.cathopic.com/resources \
-H "x-api-key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "test"}'
Gyakori hibák
Rossz Content-Type:
// ✗ Rossz
headers: {
'Content-Type': 'text/plain'
}
// ✓ Helyes
headers: {
'Content-Type': 'application/json'
}
Nem stringgé alakított body:
// ✗ Rossz
body: { query: 'test' }
// ✓ Helyes
body: JSON.stringify({ query: 'test' })
GET használata POST helyett:
// ✗ Minden végpont POST-ot igényel
method: 'GET'
// ✓ Helyes
method: 'POST'
Próbálja ki minimális kéréssel
Egyszerűsítse a lehető legkevesebbre, hogy elkülönítse a problémát:
const response = await fetch('https://api.cathopic.com/resources', {
method: 'POST',
headers: {
'x-api-key': 'YOUR_ACTUAL_KEY_HERE',
'Content-Type': 'application/json'
},
body: '{}' // Üres objektum
});
console.log(response.status);
console.log(await response.json());
Ha ez működik, fokozatosan adja vissza a paramétereket, amíg el nem kezd hibázni.
Hasonlítsa össze egy működő példával
Próbálja ki curl-lel, hogy ellenőrizze a megvalósítását:
curl -X POST https://api.cathopic.com/resources \
-H "x-api-key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "Jesus", "page": 1, "page_size": 5}'
Ha curl működik, de a kódja nem, hasonlítsa össze a pontos fejléc(ek)et és a body-t.
Még mindig elakad?
Vegye fel a kapcsolatot a fejlesztői támogatással, és küldje el:
Teljes hibaüzenet
Kérés fejléc(ek) (rejtse el a teljes API-kulcsát)
Kérés body
Válasz státusza és body-ja
Programozási nyelv és HTTP-könyvtár
Kódrészlet (a hitelesítő adatok felfedése nélkül)