Response Headers
Всеки response от FourA API включва малък набор от персонализирани headers. Те са полезни за проследяване, поддръжка и последващ анализ.
Headers, които FourA задава
| Header | Зададен при | Описание |
|---|---|---|
X-Foura-Request-Id |
Всеки /api/* response, включително грешки и 401 |
UUID, идентифициращ този request. Запишете го в лога от ваша страна. |
Content-Type |
Всеки response | Винаги application/json за обвивката. Стойността на content-type на целта се връща в полето headers на обвивката. |
X-Foura-Request-Id
Всяко извикване към POST /api/single/, POST /api/proxy/ или POST /api/browser/ се маркира с UUID. Този header се задава дори когато удостоверяването е неуспешно, така че можете да съпоставите и неправилно конфигурирани извиквания.
curl -i -X POST https://eu.api.foura.ai/api/single/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"method": "GET", "url": "https://example.com"}'
HTTP/1.1 200 OK
X-Foura-Request-Id: 9f1c4e6c-7b2a-4d3e-8a1f-2c9d8e4a3b15
Content-Type: application/json
...
Кога да го използвате
- Тикети за поддръжка: включете този request ID и ние ще можем да намерим точното извикване в нашите записи.
- Вашите собствени логове: съхранявайте го до съответния ред в лога на приложението ви. Ако клиент се оплаче, че "данните са били грешни в 14:32", можете да възпроизведете същия request.
- Проследяване в Dashboard: същият ID се появява в Activity feed за ключовете, които управлявате, така че можете да отворите съответния ред и да прегледате уловените request и response.
Пример: логване от ваша страна
import logging
import requests
log = logging.getLogger(__name__)
def fetch(url, api_key):
resp = requests.post(
"https://eu.api.foura.ai/api/single/",
headers={"X-API-Key": api_key, "Content-Type": "application/json"},
json={"method": "GET", "url": url},
)
request_id = resp.headers.get("X-Foura-Request-Id", "no-id")
log.info("foura request_id=%s url=%s status=%s", request_id, url, resp.status_code)
resp.raise_for_status()
return resp.json()
async function fetchPage(url, apiKey) {
const resp = await fetch('https://eu.api.foura.ai/api/single/', {
method: 'POST',
headers: { 'X-API-Key': apiKey, 'Content-Type': 'application/json' },
body: JSON.stringify({ method: 'GET', url })
});
const requestId = resp.headers.get('X-Foura-Request-Id') || 'no-id';
console.log(`foura request_id=${requestId} url=${url} status=${resp.status}`);
return resp.json();
}
Поведение на кеша
API не задава Cache-Control или ETag в responses. Всяко извикване достига до backend-а. Ако имате нужда от кеширане, го добавете от ваша страна.
Response headers на целта
Headers, върнати от целевия сайт, не се намират в response на FourA API. Те се връщат вътре в JSON обвивката като полето headers. За Single и Proxy endpoints това е масив от header обекти за всеки преход (по един запис за всяка стъпка от пренасочването). За Browser endpoint това е плосък обект с крайните response headers.
{
"status": 200,
"headers": [
{ "Content-Type": "text/html; charset=utf-8", "Server": "..." }
],
"data": "<!doctype html>...",
"total_time": 0.42
}
Ако имате нужда от конкретен целеви header, го прочетете от полето headers на обвивката, а не от самия HTTP response на извикването към API.
Свързани теми
- API Endpoints: Структура на request и response обвивките
- API Errors: Как са структурирани responses за грешки
- Activity Log: История за всеки request, индексирана по request ID