Ang mga problema sa network ay maaaring maging sanhi ng pagkabigo ng mga kahilingan sa API. Narito kung paano haharapin nang maayos ang mga timeout at mga isyu sa koneksyon.
Itakda ang naaangkop na mga timeout
Palaging magtakda ng mga timeout upang maiwasan ang pagbitin ng mga kahilingan:
// JavaScript with fetch
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 30000); // 30s
try {
const response = await fetch('https://api.cathopic.com/resources', {
method: 'POST',
headers: {
'x-api-key': apiKey,
'Content-Type': 'application/json'
},
body: JSON.stringify({ query: 'Jesus' }),
signal: controller.signal
});
clearTimeout(timeout);
return await response.json();
} catch (error) {
clearTimeout(timeout);
if (error.name === 'AbortError') {
console.error('Request timed out after 30s');
} else {
console.error('Network error:', error);
}
throw error;
}
// Python with requests
import requests
from requests.exceptions import Timeout, RequestException
try:
response = requests.post(
'https://api.cathopic.com/resources',
headers={'x-api-key': api_key},
json={'query': 'Jesus'},
timeout=30 # 30 seconds
)
return response.json()
except Timeout:
print('Request timed out after 30s')
raise
except RequestException as e:
print(f'Network error: {e}')
raise
Mga karaniwang error sa network
Timeout sa koneksyon:
Hindi maitatag ang koneksyon sa server
Karaniwang isyu sa network o firewall
Suriin ang koneksyon sa internet
Tiyaking pinapayagan ng firewall ang HTTPS sa api.cathopic.com
Timeout sa pagbabasa:
Naitatag ang koneksyon ngunit walang tugon
Maaaring mabagal o sobrang karga ang server
Dagdagan ang timeout o subukang muli sa ibang pagkakataon
Kabiguan sa resolusyon ng DNS:
Hindi ma-resolve ang api.cathopic.com
Isyu sa DNS server
Subukang muli o suriin ang mga setting ng DNS
Muling subok na may backoff
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 30000);
const response = await fetch(url, {
...options,
signal: controller.signal
});
clearTimeout(timeout);
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
return await response.json();
} catch (error) {
const isLastAttempt = attempt === maxRetries - 1;
if (isLastAttempt) {
console.error(`All ${maxRetries} attempts failed`);
throw error;
}
const waitTime = Math.pow(2, attempt) * 1000;
console.log(`Attempt ${attempt + 1} failed. Retrying in ${waitTime}ms...`);
await new Promise(resolve => setTimeout(resolve, waitTime));
}
}
}
Mga inirerekomendang halaga ng timeout
Timeout sa koneksyon: 10 seconds
Timeout sa pagbabasa: 30 seconds
/resources search: 30 seconds
/confirm licensing: 30 seconds
Pag-debug ng mga isyu sa network
Gamitin ang curl upang subukan ang koneksyon:
# Test basic connectivity
curl -v https://api.cathopic.com/resources
# Test with timeout
curl --max-time 30 -X POST https://api.cathopic.com/resources \
-H "x-api-key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "test"}'
Suriin kung may:
✓ Niresolba ang DNS para sa api.cathopic.com
✓ Matagumpay ang SSL/TLS na koneksyon
✓ Nakatanggap ng HTTP response
✓ Makatwirang oras ng tugon (<5s karaniwan)
Kung magpapatuloy ang mga isyu, makipag-ugnayan sa support gamit ang mga detalye ng network diagnostic.