При работе над серверной частью проектов обработка запросов и ответов имеет решающее значение. Эффективное управление этими запросами важно для бесперебойной связи между клиентом и сервером. Вот некоторые распространенные и важные свойства запроса, с которыми должен быть знаком каждый разработчик.
req.ip в Express.js — это свойство объекта запроса, которое предоставляет IP-адрес клиента, отправляющего запрос. Он возвращает строку, представляющую IP-адрес клиента.
Обработка прокси:
По умолчанию, если приложение находится за прокси-сервером, req.ip может возвращать IP-адрес прокси-сервера, а не IP-адрес реального клиента. Чтобы получить правильный IP-адрес клиента, вы можете настроить Express для доверия прокси-серверу, установив доверенный прокси.
app.set("trust proxy", true);
Теперь req.ip будет возвращать правильный IP-адрес клиента, даже если он находится за прокси-сервером.
Пример:
app.get('/', (req, res) => { console.log(req.ip); // Logs the client's IP address res.send(`Your IP address is ${req.ip}`); });
Чтобы использовать req.cookies, нам необходимо установить пакет под названием промежуточное ПО cookie-parser. Свойство используется для получения файлов cookie, отправленных клиентом, в заголовке Cookies. Файлы cookie в req.cookies не подписаны, что означает, что они не были изменены или проверены. Вы можете использовать это для менее конфиденциальных данных
import cookieParser from "cookie-parser"; app.use(cookieParser()); app.get('/example', (req, res) => { console.log(req.cookies); // { cookieName: 'cookieValue' } });
Чтобы использовать req.signedCookies, нам необходимо установить пакет под названием промежуточное ПО cookie-parser. Он содержит файлы cookie, которые были подписаны и проверены, чтобы гарантировать, что они не были изменены. Подписанные файлы cookie шифруются секретным ключом. В req.signedCookies сохраняются только файлы cookie, прошедшие проверку.
Как установить подписанные файлы cookie:
Чтобы установить подписанный файл cookie, вы можете использовать опцию «signed: true»:
res.cookie('signedCookieName', 'signedValue', { signed: true });
Пример:
import cookieParser from "cookie-parser"; app.use(cookieParser('your-secret-key')); app.get('/example', (req, res) => { console.log(req.signedCookies); // { signedCookieName: 'signedValue' } });
req.params в Express.js — это объект, содержащий параметры маршрута из URL-адреса запроса. Параметры маршрута представляют собой именованные заполнители в пути маршрута, а req.params сохраняет значения, предоставленные клиентом в URL-адресе для этих заполнителей.
Вы можете определить маршрут с параметрами, используя двоеточие (:) перед именем параметра.
Пример:
app.get('/users/:userId', (req, res) => { console.log(req.params); // { userId: 'valueFromURL' } res.send(`User ID is ${req.params.userId}`); });
req.query в Express.js — это объект, содержащий параметры строки запроса из URL-адреса запроса. Строки запроса — это пары ключ-значение, которые идут после знака ? в URL-адресе и используются для передачи дополнительных данных на сервер. Несколько запросов могут быть переданы с помощью &.
Пример URL:
http://example.com/search?term=flowers&sort=asc
Пример:
app.get('/search', (req, res) => { console.log(req.query); // { term: 'flowers', sort: 'asc' } res.send(`Search term: ${req.query.term}, Sort order: ${req.query.sort}`); });
Он содержит пары ключ-значение данных, отправленных клиентом. По умолчанию его значение не определено. Данные тела могут быть заполнены с использованием встроенного промежуточного программного обеспечения, такого как express.json и urlencoded({ расширенный: true }), или внешнего промежуточного программного обеспечения, такого как body-parser.
Следующий код поможет вам понять
import express from "express"; const app = express(); app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.get("/user", (req, res) => { const user = req.body; consolo.log(user); res.send(user); })
Надеюсь, это было вам полезно! Не забудьте поставить лайк и сохранить для дальнейшего использования. Приятного кодирования!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3