JS: Веб-разработка
Теория: HTTP Сессия
Каждая HTTP-сессия определяется двумя вещами:
- Запросом от клиента (браузера)
- Ответом от сервера
Во фреймворках запрос и ответ обычно представляются двумя объектами — request и response. В обработчик они приходят в качестве параметров, поэтому им можно задать любое имя. В примерах ниже их имена соответственно req (request) и res (response).
Response
Метод res.send() формирует тело ответа:
По умолчанию данные отдаются с заголовком Content-Type: text/plain. Даже если мы передадим в ответе HTML, тип контента все равно не поменяется, так как Fastify не анализирует что мы отдаем. Поэтому дополнительно придется менять тип:
Если данные нужно отдать в виде JSON, то для этого указывать заголовок не обязательно. Фреймворк автоматически сформирует JSON и установит Content-Type равным json.
Кроме тела ответа, мы можем установить заголовки и поменять код ответа.
Еще мы можем выполнить редирект:
Request
Данные запроса можно получить с помощью свойств. Обычно такие вещи смотрят по необходимости, поэтому заучивать их смысла нет. Рассмотрим несколько самых базовых свойств:
Параметры запроса
Параметры запроса не считаются частью маршрута и не влияют на выбор обработчика.
Это связано с тем, что они используются для разных вспомогательных целей — например, параметр page обозначает страницу просматриваемого списка. В такой ситуации обработчик один и тот же, а вот данные — разные. Представим, что у нас есть вот такой код:
А теперь посмотрим, что он выводит в лог в ответ на разные запросы из браузера:
Во всех этих случаях фреймворк вызовет один и тот же обработчик, связанный с маршрутом /users. Фреймворк автоматически разбирает эти параметры и дает к ним удобный доступ через свойство объекта query:
Параметры запроса не связаны с методом HTTP. Они могут приходить как на GET-запросы, так и на все остальные:
Тип параметров
С точки зрения HTTP, все переданные через него данные — это строки. Параметры не исключения — они так же являются строками:
В примере выше в массиве state.users хранятся данные о пользователе. Значение id является числом. В обработчике параметр id является строкой, поэтому при строгом сравнении происходит приведение к одному типу.
Рекомендуемые программы
Завершено
0 / 23


