1. 程式人生 > 其它 >Express請求處理之POST引數的獲取

Express請求處理之POST引數的獲取

POST引數的獲取

Express 中接收POST請求引數需要藉助第三方包 body-parser

//引入body-parser模組
const bodyParser = require('body-parser');
//配置body-parser模組
app.use(bodyParser.urlencoded({ extended: false}));
//接受請求
app.post('/add',(req, res) =>{
	//接受請求引數
	console.log(req.body);
})

通過require方法將body-parser模組 引入到專案當中。
body-parser返回一個模組物件使用body-parser變數去接收。

使用app.use這個中介軟體攔截所有請求,然後呼叫body-parser模組物件下面urlencoded方法對請求進行處理。方法內部會檢測當前請求是否包含了請求引數,如果包含會接受請求引數並且將請求引數轉換為物件型別,然後再為req這個請求物件新增一個屬性,屬性叫body。
並且將請求引數作為值賦值給req.body這個屬性,在方法內部呼叫next方法,將請求控制權交給下一個中介軟體。接下來在路由中通過req.body屬性拿到這個請求引數,在上面的程式碼當中當客戶端以post請求方式請求/add路由的時候,通過req.body屬性獲取了POST請求引數。
在urlencoded中傳遞了extended這個引數,extended本身有擴充套件的意思,當這個引數的值為false時,在方法內部會使用queryString這個系統模組對引數 的格式進行處理。當引數的值為true時使用一個qs的第三方模組對請求引數進行處理,qs模組也可以將請求引數的格式轉換為物件型別。而且功能上要比nodejs系統模組queryString更加強大。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action = "http://localhost:3000/add" method = "post">
        <input type="text" name = "username">
        <input type="password" name = "password">
        <input type="submit" name = "">
    </
form
>
</body> </html>
// 引入express框架
const express = require('express');
const bodyParser = require('body-parser');
// 建立網站伺服器
const app = express();
// 攔截所有請求
// extended:false 方法內部使用querystring模組處理請求引數的格式
// extended:true 方法內部使用第三方模組qs模組請求引數的格式
app.use(bodyParser.urlencoded({extend:false}))
app.post('/add',(req,res) =>{
    // 接受post請求引數
    res.send(req.body)
})
app.listen(3000);
console.log("網站伺服器啟動成功");

在這裡插入圖片描述

在這裡插入圖片描述