WordPress с версии 4.7 активно использует REST API, предоставляя мощный инструмент для взаимодействия с сайтом извне. При разработке кастомных эндпоинтов или интеграции с внешними сервисами часто возникает необходимость в детальной отладке REST API запросов. В этой статье разберём, как эффективно делать отладку REST API в WordPress с примерами кода и полезными советами.
Почему важна отладка REST API в WordPress
REST API – это интерфейс взаимодействия, который передаёт данные в формате JSON. Ошибки в структуре запроса, неправильные права доступа, проблемы с сериализацией данных или сбои в логике обработки запроса могут привести к неожиданным результатам. Без грамотной отладки сложно понять, где именно возникла проблема.
Кроме того, REST API часто вызывается из внешних приложений, где отследить ошибку сложнее, чем в стандартной админке WordPress. Поэтому разработчику важно уметь просматривать тело запроса, ответ сервера, HTTP-коды и логи ошибок.
Основные инструменты для отладки REST API WordPress
Логи ошибок PHP и WP_DEBUG
Первый шаг – включить в wp-config.php режим отладки:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Это позволит записывать все ошибки PHP в файл wp-content/debug.log без вывода на экран. Если REST API генерирует PHP ошибки, вы их увидите в этом файле.
Плагины для отладки REST API
Есть плагины, которые значительно упрощают диагностику запросов к REST API:
- REST API Console – позволяет отправлять запросы и смотреть ответы прямо из админки WordPress.
- Query Monitor – мощный инструмент, который показывает все запросы, включая REST API, с подробной информацией о времени выполнения, ошибках и хукках.
Оба плагина доступны на WPSHOP и официальном каталоге WordPress.
Как добавить логирование запросов и ответов REST API в WordPress
Иногда стандартных инструментов недостаточно, и нужно добавить собственную систему логирования для конкретных эндпоинтов.
Например, создадим функцию wparticles_log_rest_request, которая будет записывать данные запроса и ответа в файл лога.
function wparticles_log_rest_request(\WP_REST_Request $request, \WP_REST_Response $response) {
$log = [
'time' => current_time('mysql'),
'route' => $request->get_route(),
'method' => $request->get_method(),
'params' => $request->get_params(),
'response' => $response->get_data(),
'status' => $response->get_status(),
];
$log_entry = print_r($log, true);
error_log("REST API Debug:\n" . $log_entry, 3, WP_CONTENT_DIR . '/rest-api-debug.log');
return $response;
}
add_filter('rest_post_dispatch', 'wparticles_log_rest_request', 10, 2);
Этот код добавляет фильтр, который срабатывает после формирования ответа. Все данные о запросе и ответе записываются в файл wp-content/rest-api-debug.log. Это помогает видеть, какие параметры передаются и что возвращается.
Отладка ошибок аутентификации и прав доступа в REST API
Частая проблема при работе с REST API – ошибки, связанные с правами доступа (401 Unauthorized, 403 Forbidden). Чтобы выявить причины, полезно:
- Проверить, какие права проверяются в вашем кастомном эндпоинте. Например, в параметре
permission_callback. - Добавить вывод текущего пользователя и его ролей в лог.
- Тестировать запросы через плагины или curl с разными токенами и ключами.
Пример кода с расширенной проверкой и логированием прав доступа:
function wparticles_custom_permission_callback() {
$user = wp_get_current_user();
error_log('User for REST API access: ' . $user->user_login . ', roles: ' . implode(',', $user->roles), 3, WP_CONTENT_DIR . '/rest-api-debug.log');
return current_user_can('edit_posts');
}
register_rest_route('wparticles/v1', '/data', [
'methods' => 'GET',
'callback' => 'wparticles_get_data',
'permission_callback' => 'wparticles_custom_permission_callback',
]);
Использование WP-CLI для тестирования REST API
WP-CLI – это консольный инструмент управления WordPress. Он позволяет отправлять REST API запросы из терминала, что удобно для быстрой отладки и автоматизации тестов.
Пример команды для вызова GET запроса:
wp rest api get /wp/v2/posts --url=https://example.com
Вы можете использовать параметры для передачи заголовков, тела запроса и т.д. Подробнее о WP-CLI и REST API можно узнать на WPSHOP.
Заключение: лучшие практики и советы по отладке REST API в WordPress
- Всегда включайте WP_DEBUG и WP_DEBUG_LOG на этапе разработки.
- Используйте плагины Query Monitor и REST API Console для визуального контроля.
- Добавляйте собственное логирование для сложных эндпоинтов.
- Проверяйте права доступа и аутентификацию тщательно.
- Тестируйте API через WP-CLI и сторонние инструменты (Postman, curl).
- Не забывайте очищать логи и отключать подробное логирование на продакшене.
Следуя этим рекомендациям, вы сможете быстро находить и исправлять ошибки в REST API WordPress, что повысит стабильность и безопасность ваших проектов.