TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
твиттерэда | QA: резюме, собесы, оффер

15 Jul, 10:22

Открыть в Telegram Поделиться Пожаловаться

У нас появился новый метод HTTP, который называется QUERY.

По сути, он как GET, но при этом у него есть body, как у POST-запроса.
Отвечая на логичный вопрос: «А нахуя он вообще нужен?» — я отвечу.
Он нужен для тех ситуаций, когда мы ничего не меняем на сервисе, на сервере, но при этом создаём какой-то сложный поисковый запрос с большим набором фильтров.
В целом, когда мы хотим получить какие-то данные, мы отправляем GET-запрос. Но есть проблема: у него нет тела запроса, и, соответственно, все данные передаются в URL.
Если фильтров много или они сложные, много условий, какие-то вложенные JSON, пагинация, сортировка и так далее, URL становится огромным, нечитаемым и может упереться в лимиты.
Либо он попадает в логи, историю браузера, и, если в фильтрах есть какие-то чувствительные данные, это, соответственно, плохо.

Что же используют вместо GET-запроса?
В таком случае используют POST-запрос. Просто в body складывают все необходимые фильтры. На этом, собственно, всё.
Несмотря на то, что POST в RESTful — это про изменение данных, он использовался как раз-таки для таких запросов.
И наш новый метод, по сути, решает именно эту проблему.
При этом он уже стандартизирован, но на самом деле пока что какого-то массового использования у него нет, потому что он опубликован буквально в прошлом месяце. Сейчас в основном встречаются всякие тестовые реализации.
Я хотел найти и показать вам, как он используется, но мы позже об этом проговорим.
Нам нужно понимать, что GET у нас безопасный и идемпотентный запрос, но параметры у него обычно передаются в URL.
POST может передать нам сложное тело, но это не обязательно безопасная или идемпотентная операция.
А QUERY — это безопасный и идемпотентный запрос с полноценным телом.
Сейчас какой-то реальной поддержки этого запроса нет. Я думаю, что в ближайшем будущем будет. Я здесь солидарен с Валентином Кимом.

Но давайте посмотрим, как он может выглядеть в Chrome прямо через DevTools, и заодно посмотрим на POST-запрос, который используется в таких случаях, когда нам это нужно.

- Открой любой сайт.
- Нажми F12.
- Перейди в Console.
- Выполни:
fetch("https://httpbin.org/anything", {
method: "QUERY",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
filters: {
status: "ACTIVE"
},
page: 0,
size: 20
})
})
.then(response => response.json())
.then(console.log)
.catch(console.error);
- После этого открой Network, найди anything и посмотри:
Request Method: QUERY

Возможен нюанс: из-за CORS сначала появится запрос OPTIONS, а сам QUERY может быть заблокирован сервером. Это как раз одна из текущих проблем нового метода.

А для POST-запроса с большим количеством фильтров и сортировкой можно сделать следующее:

- Открой:
https://fontawesome.com/search

- Открой DevTools → Network.
- Включи фильтр Fetch/XHR.
- В строке поиска введи, например, user.
- Выбери несколько фильтров: стиль, категорию, бесплатные или платные и так далее.
- Найди запрос, в адресе которого есть:
algolianet.com/1/indexes/*/queries

У него должен быть:
Request Method: POST
При этом запрос только ищет и возвращает иконки. Он не создаёт новую сущность.

Думаю астрологи объявят совсем скоро неделю вопросов про новый запрос, этакая проверка слежки за новостями

прочесть про сам метод: https://www.rfc-editor.org/rfc/rfc10008.html

2.3k 0 26 3 52
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot