nodejs.cn-Node.js-入門教程:使用 Node.js 獲取 HTTP 請求的正文資料
阿新 • • 發佈:2020-08-19
ylbtech-nodejs.cn-Node.js-入門教程:使用 Node.js 獲取 HTTP 請求的正文資料 |
1.返回頂部 |
使用 Node.js 獲取 HTTP 請求的正文資料
這是在請求正文中提取以 JSON 格式傳送的資料的方式。
如果使用的是 Express,則非常簡單:使用body-parser
Node.js 模組。
例如,獲取此請求的正文:
const axios = require('axios')
axios.post('http://nodejs.cn/todos', {
todo: '做點事情'
})
這是對應的伺服器端程式碼:
const bodyParser = require('body-parser')
app.use(
bodyParser.urlencoded({
extended: true
})
)
app.use(bodyParser.json())
app.post('/todos', (req, res) => {
console.log(req.body.todo)
})
如果不使用 Express 並想在普通的 Node.js 中執行此操作,則需要做多一點的工作,因為 Express 抽象了很多工作。
要理解的關鍵是,當使用http.createServer()
在連接回調中傳入的request
物件是一個流。
因此,必須監聽要處理的主體內容,並且其是按資料塊處理的。
首先,通過監聽流的data
事件來獲取資料,然後在資料結束時呼叫一次流的end
事件:
const server = http.createServer((req, res) => {
// 可以訪問 HTTP 請求頭
req.on('data', chunk => {
console.log(`可用的資料塊: ${chunk}`)
})
req.on('end', () => {
//資料結束
})
})
因此,若要訪問資料(假設期望接收到字串),則必須將其放入陣列中:
const server = http.createServer((req, res) => {
let data = []
req.on('data', chunk => {
data.push(chunk)
})
req.on('end', () => {
JSON.parse(data).todo // '做點事情'
})
})
2、
2.返回頂部 |
3.返回頂部 |
4.返回頂部 |
5.返回頂部 |
6.返回頂部 |
作者:ylbtech 出處:http://ylbtech.cnblogs.com/ 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。 |