@formasters777

Применение объекта req.query на сервере node js?

Актуально ли использование объекта req.query для запросов на сервер node js?
Ведь данные можно отсылать как req.body и req.params, объект или массив параметров на сервер,
а сервер по наличию параметров отрабатывает уже сам запрос,
а сам url менять менять через pushState, для визуальной составляющей на самом сайте,
или вообще не менять сам url адрес с отметками запроса.
Какой будет смысл сборки req.query запросов на клиенте для передачи на сервер,
если списки выдачи уже были созданы и хранятся на сервере для быстрой отдачи,
и никогда не происходит прямого контакта между пользователем с его req.query запросами и базой данных mongoDB.
Только для удобства роутинга запросов на сервере?
  • Вопрос задан
  • 511 просмотров
Решения вопроса 3
Grapeoff
@Grapeoff
В чём концепция...?
А как без req.query вы передадите какие-либо дополнительные данные в GET запросе? GET запросы не могут иметь тела, однако для пагинации limit и offset как-то надо прислать, вот и остаются query параметры.

GET /entity?limit=10&offset=0

Если сделать это параметрами, то это будет выглядеть как-то так

GET /entity/10/0

Согласитесь, что реализовывать это так — очень плохая идея. Даже если не брать во внимание полное отсутствие читаемости, мы как минимум лишаем себя возможности сделать роут GET /entity/:id, тк перекрываем его предыдущим роутом.
Ответ написан
Комментировать
@formasters777 Автор вопроса
А какой смысл вообще делать систему query в url строке,
не могу знать, как сайты использовали эту систему в каком-нибудь 2010,
но в React, можно просто сделать Route path="/shop" и на этой странице добавить кнопки фильтров,
при клике срабатывает fetch с соответствующим req.query или req.params,
сервер читает это, фильтр срабатывает и отправляет ответ,
но url браузера при этом стоит и не шевелится.
Но в некоторых видео можно увидеть, как в Postman и др. софте,
делают запрос к серверу с query?category=followers, сервер читая эту строку отвечает данными базы и выдаёт список подписчиков.
1. Это связано с ботами поисковиков, которые просматривают сайт?
2. Для экономии роутов или линков на страницах?
3. Для динамического формирования линка?
4. Для того, чтобы просто манипулировать этими ключевыми словами для создания ссылок на кнопки поиска, фильтрации и т.п. , и при этом не использовать на клиенте fetch, ajax ?

Для чего на клиенте в React и других фреймвёрках, в поисковой строке показывать https://mainsite.com/shop/sort?furniture=chairs - для визуального контроля, это визуальная абстракция?
Ответ написан
Комментировать
@foterio
1. Для SEO-оптимизации. Робот не нажимает на кнопки/фильтры и прочее. А просто ходит по страницам. И следовательно он не сможет нормально проиндексировать их. (не важно, если это внутренние корпоративные системы, личные кабинеты и прочее, там где необходима авторизация)
2. Чтобы пользователи могли кидать ссылку друг другу и получать одинаковый результат. Также чтобы вы сами могли через баннеры или рекламу отправлять пользователя на нужные товары.
3. SSR - для серверного рендеринг. Серверу при отработке запроса необходимо знать все данные, чтобы правильно отрендерить страницу и выдать готовый HTML за один заход. Поэтому все и передают эти параметры таким образом еще query.

Вот здесь более подробно рассказывал как это работает
https://qna.habr.com/q/1274714#answer_2331146
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы