Express 中间件

中间件(Middleware)是一种钩入路由过程的函数,它在链中的某一点执行任意操作(取决于我们想要它执行的操作)。 中间件常用于编辑请求或响应对象,或在到达路由处理程序代码之前终止请求。 添加中间件到执行堆栈的方式如下: app.use((req, res, next) => { /* */ }) 这类似于定义路由,但除了请求和响应对象实例之外,我们还有一个对下一个中间件函数的引用,我们将其分配给变量 next。 我们总是在我们的中间件函数的结尾调用 next(),以便将执行传递给下一个处理程序。除非我们想要提前结束响应并将其发送回客户端。 通常情况下,您会使用预先创建的中间件,以 npm 包的形式存在。可以在 这里 找到可用中间件的大列表。 一个例子是 cookie-parser,它用于将 cookie 解析为 req.cookies 对象。您可以使用 npm install cookie-parser 安装它,并如下使用: const express = require('express') const app = express() const cookieParser = require('cookie-parser') app.get('/', (req, res) => res.send('Hello World!')) app.use(cookieParser()) app.listen(3000, () => console.log('Server ready')) 我们还可以将中间件函数设置为仅对特定路由运行(而非全部)。方法是将其作为路由定义的第二个参数: const myMiddleware = (req, res, next) => { /* ... */ next() } app.get('/', myMiddleware, (req, res) => res....

使用Node進行HTTP POST請求

了解如何使用Node進行HTTP POST請求 在Node中進行HTTP POST請求有很多方法,具體取決於你想使用的抽象級別。 在Node中執行HTTP請求最簡單的方法是使用Axios庫: const axios = require('axios') axios .post('/todos', { todo: '買牛奶', }) .then((res) => { console.log(`statusCode: ${res.statusCode}`) console.log(res) }) .catch((error) => { console.error(error) }) 另一種方法是使用Request庫: const request = require('request') request.post( '/todos', { json: { todo: '買牛奶', }, }, (error, res, body) => { if (error) { console.error(error) return } console.log(`statusCode: ${res.statusCode}`) console.log(body) } ) 到目前為止介紹的2種方法需要使用第三方庫。 使用Node標準模塊也可以進行POST請求,雖然比前面兩種選項更冗長: const https = require('https') const data = JSON.stringify({ todo: '買牛奶', }) const options = { hostname: 'yourwebsite....

如何使用 Node.js 下載圖片

當你需要程式化地從伺服器下載檔案時,你會如何下載一個檔案呢? 這個問題讓我自問不已,當我需要從伺服器下載檔案並將其儲存在本地時。 以下是我所使用的程式碼: const fs = require('fs') const request = require('request') const download = (url, path, callback) => { request.head(url, (err, res, body) => { request(url) .pipe(fs.createWriteStream(path)) .on('close', callback) }) } const url = 'https://…' const path = './images/image.png' download(url, path, () => { console.log('✅ 完成!') }) 這段程式碼使用了內建的 fs 模組以及 request 模組。 必須先安裝 request: npm install request 需要注意的是,request 模組最近已經被棄用,這意味著它已經被「完成」,不會再有新的功能被加入。但這並不表示它停止運作,也不表示我們該停止使用它。