」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 每個開發人員都應該了解的基本 Express 請求屬性

每個開發人員都應該了解的基本 Express 請求屬性

發佈於2024-11-08
瀏覽:210

ssential Express Request Properties Every Developer Should Know

在專案後端工作時,處理請求和回應至關重要。有效管理這些請求對於客戶端和伺服器之間的順利通訊至關重要。以下是每個開發人員都應該熟悉的一些常見且重要的請求屬性。

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);
})

希望您覺得這有幫助!不要忘記喜歡並保存以供將來參考。快樂編碼!

版本聲明 本文轉載於:https://dev.to/atul_thakre_a3ed87610e45f/6-essential-express-request-properties-every-developer-should-know-3ig7?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何偵測 Go 標準輸入 (Stdin) 中的資料可用性?
    如何偵測 Go 標準輸入 (Stdin) 中的資料可用性?
    使用Go 檢測標準輸入(Stdin) 中的資料可用性在Go 中,可以使用以下技術檢查標準輸入流(os.Stdin) 中的資料:驗證其檔案大小。它的工作原理如下:os.Stdin 可以像任何常規文件一樣對待,允許我們檢查其屬性。為此,我們使用 os.Stdin.Stat() 檢索 FileInfo 物...
    程式設計 發佈於2024-11-08
  • Wasp:Web 開發中 Django 的 JavaScript 答案
    Wasp:Web 開發中 Django 的 JavaScript 答案
    Wasp v Django: Building a full stack application just got a lot easier Hey, I’m Sam, a backend engineer with a lot of experience with Django....
    程式設計 發佈於2024-11-08
  • 如何在沒有鍵盤中斷的情況下透過按鍵中斷 While 迴圈?
    如何在沒有鍵盤中斷的情況下透過按鍵中斷 While 迴圈?
    透過按鍵中斷While 循環在使用while 循環讀取串行資料並將其寫入CSV 檔案的場景中,您可能希望為使用者提供終止循環以停止資料收集的選項。本文探討了在不明確使用鍵盤中斷的情況下實現此類功能的技術。 一個簡單的方法是利用 try- except 區塊來處理 KeyboardInterrupt ...
    程式設計 發佈於2024-11-08
  • 週 oot 訓練營學習
    週 oot 訓練營學習
    我決定邁出大膽的一步,參加由 LuxDevHQ 組織的我的第一個資料職業訓練營。這是一個為期 5 週的訓練營,旨在培養實踐資料技能。該訓練營旨在讓人們接觸至少 4 個專業領域的各種資料技能。 第一周以資訊會議開始,我進行了專案定向,並向我介紹了該專案並了解了整個專案的期望。 在這第一周,我學到了...
    程式設計 發佈於2024-11-08
  • 如何使用 Homebrew 和 jenv 在 Mac OS X 上管理多個 Java 版本?
    如何使用 Homebrew 和 jenv 在 Mac OS X 上管理多個 Java 版本?
    在Mac OS X 上管理多個Java 版本由於Java 管理其安裝的方式,在Mac OS X 上安裝多個Java 版本可能是一項挑戰。不過,有一個解決方案可以讓您輕鬆安裝和管理不同的 Java 版本:Homebrew。 使用 Homebrew 和 jenvHomebrew 是一個套件管理器,可以簡...
    程式設計 發佈於2024-11-08
  • 如何建立 React 應用程式?安裝與環境設置
    如何建立 React 應用程式?安裝與環境設置
    在開始使用 React 建立應用程式之前,擁有正確的開發環境非常重要。以下是幫助您入門的分步指南: 步驟 1. 安裝 Node.js 和 npm 設定 React 環境的第一步是安裝 Node.js,因為它提供了在瀏覽器外部執行程式碼所需的 JavaScript 執行程式時。當您安裝 Node.js...
    程式設計 發佈於2024-11-08
  • python 並發.futures
    python 並發.futures
    未来 Future 是一个容器,可以保存计算结果或计算期间发生的错误。创建 future 时,它​​以 PENDING 状态开始。该库不打算手动创建此对象,除非出于测试目的。 import concurrent.futures as futures f = futures.Futu...
    程式設計 發佈於2024-11-08
  • 使用純 Javascript 只需幾行即可實現飛向購物車的動畫。
    使用純 Javascript 只需幾行即可實現飛向購物車的動畫。
    最近,我偶然發現了一個舊教程,展示了使用 jQuery 實現飛行到購物車的動畫。我想透過使用純 JavaScript 實現相同的效果來挑戰自己。 我創建了一個包含產品和購物車圖示的簡單佈局。樣式並不重要,所以我們不會在這裡討論它。 訣竅是複製產品圖像,將其添加到產品元素之前。然後計算克隆圖像和購...
    程式設計 發佈於2024-11-08
  • Bokeh 是一個有趣的 Python 資料視覺化資料工具
    Bokeh 是一個有趣的 Python 資料視覺化資料工具
    資料視覺化在解釋大量資訊方面發揮關鍵作用。 Bokeh 等工具已成為建立互動式儀表板和報告的流行解決方案。每個工具都具有獨特的優勢,具體取決於您專案的複雜性和您首選的程式語言。在本文中,我們將深入研究每個工具,然後專注於 Bokeh,包括實踐範例和雲端中的部署。 以便... 什麼是散景? Bok...
    程式設計 發佈於2024-11-08
  • django-components v 模板現在與 Vue 或 React 相當
    django-components v 模板現在與 Vue 或 React 相當
    嘿,我是 Juro,我是 django-components 的維護者之一。在 v0.90-0.94 版本中,我們添加了一些功能,使模板中的元件使用更加靈活,類似於 JSX / Vue。 (此資訊已經有點過時了(一個月前發布;最新的是v0.101),因為我正忙著添加對JS / CSS 變數、Typ...
    程式設計 發佈於2024-11-08
  • 如何在 Go 中解密 AES ECB 模式加密?
    如何在 Go 中解密 AES ECB 模式加密?
    Go 中的AES ECB 加密Go 中的AES ECB 加密package main import ( "crypto/aes" "fmt" ) func decryptAes128Ecb(data, key []byte) []byte { ...
    程式設計 發佈於2024-11-08
  • 在 GitHub-echo 中實現 TOML 配置支持
    在 GitHub-echo 中實現 TOML 配置支持
    介绍 最近,我有机会通过添加对 TOML 配置文件的支持来增强 github-echo 命令行工具。此功能允许用户在 .github-echo-config.toml 文件中设置持久默认选项,从而减少每次使用该工具时手动输入重复配置的需要。在这篇文章中,我将向您介绍我在该功能上的经...
    程式設計 發佈於2024-11-08
  • 如何使用 SimpleXML 和 DOMDocument 刪除 XPath 節點?
    如何使用 SimpleXML 和 DOMDocument 刪除 XPath 節點?
    SimpleXML:刪除XPath 節點在本文中,我們將探討如何使用以下方法有效地從XML 文件中刪除父節點: SimpleXML 和XPath。 了解 SimpleXML限制提供的程式碼嘗試使用 SimpleXML 在透過 XPath 找到父節點後刪除它。然而,SimpleXML 的 unset(...
    程式設計 發佈於2024-11-08
  • 建立一個 React Hook 以任意角度旋轉影像
    建立一個 React Hook 以任意角度旋轉影像
    在Web開發中,您可能需要旋轉影像,這在CSS中很容易做到。像這樣的簡單程式碼變換:rotate(90deg);。但是如果我們想用 JS 來做呢? TLDR 將圖像繪製到瀏覽器環境中的畫布上並旋轉它。但在此之前,我們需要做一些數學運算來保持原始影像的長寬比。 核 ...
    程式設計 發佈於2024-11-08
  • Lithe 中間件:它是如何運作的以及如何創建自己的中間件
    Lithe 中間件:它是如何運作的以及如何創建自己的中間件
    中间件提供了一种方便的机制来检查和过滤进入应用程序的 HTTP 请求。 例如,Lithe 包含检查用户是否经过身份验证的中间件。如果没有,中间件会将用户重定向到登录屏幕。如果用户通过身份验证,中间件将允许请求继续。 中间件如何在 Lithe 中工作 在 Lithe 中,中间件是能够访...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3