Таблица oc_api_history
Таблица oc_api_history служит для логирования всех вызовов к API интерфейсу OpenCart. Это критически важная таблица для аудита и отладки взаимодействия с внешними системами, мобильными приложениями и другими сервисами, использующими API магазина.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
api_history_id |
int |
Уникальный идентификатор записи в журнале API. |
api_id |
int |
Внешний ключ, который связывает запись с конкретным API ключом. Ссылается на таблицу oc_api.
|
route |
varchar(64) |
Маршрут (endpoint) API, к которому был выполнен запрос (например, api/account/login или api/order/history).
|
method |
varchar(6) |
HTTP-метод запроса: GET, POST, PUT, DELETE, PATCH.
|
request |
text |
Полный текст запроса, отправленного к API. Может содержать заголовки, параметры и тело запроса. |
response |
text |
Ответ, который вернул API. Содержит данные в формате JSON, либо информацию об ошибке. |
ip |
varchar(40) |
IP-адрес, с которого был выполнен запрос к API. |
date_added |
datetime |
Дата и время добавления записи в журнал (момент выполнения запроса). |
Как это работает
При каждом обращении к любому endpoint API OpenCart (например, для авторизации, получения списка товаров или создания заказа) система создает запись в таблице oc_api_history. Это происходит через механизм событий (event system) OpenCart.
Перед выполнением основного кода контроллера API (preAction) система фиксирует данные входящего запроса: route, method, request и ip. После выполнения кода и формирования ответа система дополняет запись данными из response.
Поле api_id связывает запись с конкретным API пользователем из таблицы oc_api, что позволяет отслеживать, какое приложение или пользователь совершил вызов.
Ведение такого журнала особенно важно для:
- Отладки проблем интеграции с внешними системами
- Анализа производительности API
- Мониторинга подозрительной активности и безопасности
- Аудита действий, выполненных через API
Важно отметить, что таблица может очень быстро расти при активном использовании API, поэтому рекомендуется настроить ее периодическую очистку или архивацию старых записей.
Пример SQL-запроса
Получить последние 10 записей журнала API для конкретного пользователя API можно следующим запросом:
SELECT ah.*, a.username, a.name as api_name
FROM oc_api_history ah
LEFT JOIN oc_api a ON (ah.api_id = a.api_id)
WHERE ah.api_id = 1
ORDER BY ah.date_added DESC
LIMIT 10;
Смотрите также
-
таблицу
oc_api,
которая хранит учетные записи API пользователей -
таблицу
oc_api_session,
которая хранит активные сессии API -
таблицу
oc_customer,
которая содержит данные клиентов магазина -
таблицу
oc_order,
которая хранит информацию о заказах