Запрос

Оригинальное название: query

Коротко

Обращение к базе данных, серверу или API с описанием того, какие данные нужно получить или изменить и по каким условиям.

Что такое «Запрос»

По-русски одним словом называют две разные вещи. Английское query — запрос к данным: «выбери заказы за октябрь». Request — обращение по сети: браузер просит у сервера страницу. На практике они встречаются вместе: HTTP-запрос приходит на сайт, а код, обрабатывая его, делает несколько запросов к базе. Есть и третье значение — поисковый запрос в SEO, то есть фраза, которую человек вводит в поисковик.

Запрос к базе данных

Классический язык таких запросов — SQL. Запрос перечисляет нужные поля, таблицу, условия, сортировку и ограничение. В CMS его обычно пишут не вручную, а через обёртки: в WordPress — WP_Query или объект $wpdb, в 1С-Битрикс — ORM ядра D7.

// WordPress: значения подставляются безопасно через prepare()
$rows = $wpdb->get_results($wpdb->prepare(
    "SELECT ID, post_title FROM {$wpdb->posts}
     WHERE post_status = %s AND post_type = %s LIMIT %d",
    'publish', 'product', 10
));
// 1С-Битрикс D7
$res = \Bitrix\Iblock\ElementTable::getList([
    'select' => ['ID', 'NAME'],
    'filter' => ['=IBLOCK_ID' => 5, '=ACTIVE' => 'Y'],
    'limit'  => 10,
]);

HTTP-запрос

Сетевой запрос состоит из метода, адреса, заголовков и иногда тела. Метод говорит серверу, что нужно сделать: GET — получить, POST — отправить данные, DELETE — удалить. Подробнее — в статье о методах HTTP. Сервер отвечает кодом состояния и содержимым.

Что влияет на скорость и безопасность

  • Значения от пользователя нельзя вклеивать в текст SQL — только через подготовленные выражения, иначе возможна SQL-инъекция.
  • Выбирать стоит только нужные поля и строки: SELECT * по таблице с миллионом записей тормозит страницу.
  • Условия фильтрации должны опираться на индексы. Медленные запросы видны в журнале медленных запросов СУБД или в плагине Query Monitor для WordPress.
  • Частая беда CMS — проблема N+1: на странице списка для каждого товара делается отдельный запрос за ценой или картинкой. Сотня товаров — сотня лишних обращений к базе.

Обновлено:

Все термины раздела «Backend»

Что будем искать? Например,Продвижение