每个开发人员都应该了解的基本 Express 请求属性

每个开发人员都应该了解的基本 express 请求属性

在项目后端工作时,处理请求和响应至关重要。有效管理这些请求对于客户端和服务器之间的顺利通信至关重要。以下是每个开发人员都应该熟悉的一些常见且重要的请求属性。

1. 请求ip

express.js 中的

req.ip 是请求对象的一个​​属性,它提供发出请求的客户端的 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}`);});

登录后复制

2. 请求cookies

要使用 req.cookies,我们需要安装名为 cookie-parser 中间件的包。该属性用于获取 cookies header 中客户端发送的 cookie。 req.cookies 中的 cookie 未签名,意味着它们未经修改或验证。您可以将其用于不太敏感的数据

import cookieparser from "cookie-parser";app.use(cookieparser());app.get('/example', (req, res) => {  console.log(req.cookies);  // { cookiename: 'cookievalue' }});

登录后复制

3.req.signedcookies

要使用 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' }});

登录后复制

4. 请求参数

express.js 中的

req.params 是一个包含请求 url 中的路由参数的对象。路由参数在路由路径中被命名为占位符,req.params 将客户端提供的值存储在这些占位符的 url 中。
您可以通过在参数名称前使用冒号 (:) 来定义带参数的路由。

示例:

app.get('/users/:userid', (req, res) => {  console.log(req.params); // { userid: 'valuefromurl' }  res.send(`user id is ${req.params.userid}`);});

登录后复制

5. 请求查询

express.js 中的

req.query 是一个对象,其中包含请求 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}`);});

登录后复制

6. 请求体

它包含客户端发送的数据的键值对。默认情况下,其值未定义。可以使用内置中间件(例如express.json和urlencoded({extended: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);})

登录后复制

希望您觉得这有帮助!不要忘记喜欢并保存以供将来参考。快乐编码!

以上就是每个开发人员都应该了解的基本 Express 请求属性的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2669178.html

(0)
上一篇 2025年3月7日 12:41:18
下一篇 2025年3月7日 12:41:32

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 理解 JavaScript 中的对象

    您是否遇到过需要在 javascript 代码中存储一组复杂信息的情况?例如,您需要将用户的数据存储在数据库中,例如姓名、年龄和地址。您将使用什么 javascript 框架来完成此任务? 在本文中,我们将了解对象如何在此类任务中发挥作用,…

    2025年3月7日
    200
  • JavaScript 基础知识:第 1 部分

    javascript 就像一罐蜂蜜。您可以将手指浸入其中并刷一口。很甜。太棒了。这是危险的。它可能很危险,就像锅里的热蜂蜜一样。 javascript 复杂吗?好吧,您应该在本摘录的末尾找到这个问题的答案(也包括其他部分)。我们可以问另一个…

    2025年3月7日
    200
  • JavaScript 中的对象

    有键值对,用冒号分隔。密钥也称为属性相似之处:数组的索引被对象中的键替换。对象字面量语法是直接在 {} 中写入属性对于对象来说,检索期间的顺序并不重要,而对于数组来说,顺序很重要。 数组:用于结构化数据对象:用于非结构化数据 对象中的属性查…

    2025年3月7日
    200
  • 编码面试中解决问题的终极指南

    面试问题编码的常见策略 两个指针 两个指针技术经常被用来有效地解决数组相关的问题。它涉及使用两个指针,它们要么朝彼此移动,要么朝同一方向移动。 示例:在排序数组中查找总和为目标值的一对数字。 /** * finds a pair of nu…

    2025年3月7日
    200
  • 每个开发人员都应该了解的高级 JavaScript 概念

    javascript 是许多开发人员日常使用的语言,但其生态系统中存在许多隐藏的瑰宝,即使是经验丰富的开发人员也可能不熟悉。本文探讨了一些鲜为人知的 javascript 概念,它们可以显着提高您的编程技能。我们将介绍诸如 代理、符号、生成…

    2025年3月7日
    200
  • JavaScript 是同步还是异步,是单线程还是多线程? JavaScript代码是如何执行的?

    javascript 是一种同步、单线程语言,一次只能执行一个命令。仅当当前行执行完毕后,才会移至下一行。但是,javascript 可以使用事件循环、promises、async/await 和回调队列执行异步操作(javascript …

    2025年3月7日
    200
  • 如何为 TypeScript 项目自定义 tsconfig.json 文件

    tsconfig.json 文件是一个功能强大的工具,允许您自定义 TypeScript 编译器的行为以满足项目的特定需求。通过调整此配置文件中的编译器选项,您可以根据项目的要求定制 TypeScript,从而更好地控制类型检查、模块解析和…

    2025年3月7日
    200
  • [Leetcode] 对象是否为空

    问题链接:https://leetcode.com/problems/is-object-empty/description/ [问题陈述] 给定一个对象或数组,如果为空则返回。 空对象不包含键值对。空数组不包含任何元素。 您可以假设对象或…

    2025年3月7日
    200
  • extjs API 查询参数示例

    api 查询 参数是附加到 api 请求的 url 的键值对,用于向服务器发送附加信息。它们允许客户端(例如网络浏览器或应用程序)在向服务器发出请求时指定某些条件或传递数据。 查询参数添加到 url 末尾的问号 (?) 后面。每个参数都是一…

    2025年3月7日
    200
  • typescript的数据类型

    TypeScript 提供了强类型安全性,强制执行变量和表达式的明确数据类型。它支持基本类型(数字、字符串、布尔值、空值和未定义值)和引用类型(数组、对象和函数),以及枚举类型、联合类型、类型别名和类型断言,从而提高了代码的可维护性、可读性…

    2025年3月7日
    200

发表回复

登录后才能评论