Верх страницы
Обложка к записи WordPress REST API против admin-ajax.php
Время для прочтения: 0 мин. 36 сек.

WordPress REST API против admin-ajax.php

Мы всё ещё встречаем вновь написанный код от разработчиков WordPress, которые используют admin-ajax.php для AJAX-запросов.

WordPress REST API была выпущен почти десять лет назад и он быстрее, безопаснее и значительно проще в использовании.

Проблемы с admin-ajax.php

admin-ajax.php — это устаревшая система, которая предшествует REST API. Хотя она всё ещё работает, она имеет недостатки:

  • Производительность: Она загружает всю среду администратора WordPress при каждом запросе, даже если вам это не нужно
  • Отсутствие поддержки HTTP-глаголов: Всё проходит через POST, что делает endpoints менее семантичными
  • Ограниченная структура: Действия — это просто строки без встроенной маршрутизации или валидации параметров.

По результатам тестирования производительности от Delicious Brains, эндпоинты REST API могут быть значительно быстрее, чем admin-ajax.php, потому что они обходят ненужные накладные расходы админки.

Использование REST API

Вот полный пример, показывающий, насколько чистым может быть код REST API:

PHP:

register_rest_route( 'app/v1', '/endpoint', [
    'methods' => 'GET',
    'callback' => 'callbackFunction',
    'permission_callback' => fn () => current_user_can('manage_options'),
] );

public function callbackFunction() {
    return [ 'status' => 'ok', 'message' => 'It works!' ];
}

JavaScript:

fetch('/wp-json/app/v1/endpoint', {
    method: 'GET',
})
.then(response => response.json())
.then(data => {
    console.log('Success:', data);
})
.catch(error => {
    console.error('Error:', error);
});

Почему REST API лучше

  • Встроенная безопасность: permission_callback является обязательным, что заставляет вас думать о безопасности с самого начала
  • Истинный RESTful-дизайн: Используйте правильные HTTP-методы (GET, POST, PUT, DELETE), которые соответствуют вашему намерению, и ваш API становится самодокументируемым
  • Лучшая производительность: Отсутствие накладных расходов администратора означает более быстрые ответы и меньшую нагрузку на сервер
  • Современные стандарты: REST API — это отраслевой стандарт, что делает ваш код более знакомым разработчикам и облегчает интеграцию с внешними инструментами
  • Автоматическое обнаружение: WordPress автоматически документирует ваши endpoints на /wp-json/, что упрощает тестирование и интеграцию

Когда использовать каждый из них

REST API: Всегда. Новые проекты, новые функции, любая AJAX-функциональность.

admin-ajax.php: Только при поддержке устаревшего кода, где рефакторинг не оправдан.

Переход на новый способ

WordPress REST API входит в состав ядра с версии 4.7 (выпущена в 2016 году). Нет причин продолжать разработку с использованием admin-ajax.php. REST API быстрее, безопаснее и соответствует современным веб-стандартам.

Для подробного руководства по использованию REST API ознакомьтесь с официальным туториалом WordPress.

Относитесь к admin-ajax.php так же, как вы относитесь к jQuery в современном мире: устаревший код, который не должен появляться в новых проектах.

Комментарии
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Предыдущая запись
Следующая запись

Давайте дружить
в Telegram

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Symfony, Laravel, Moonshine, фильмы и сериалы