首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Express 4.x 路由處理 POST 請求的正確姿勢

     編輯:程式設計綜合問答

問題背景

Express 4.2.0 項目中,路由文件 login.js 僅定義了 router.get('/'),需新增 POST 請求處理。

核心解決:使用 router.post()

// login.js
var express = require('express');
var router = express.Router();

// GET /login
router.get('/', function(req, res) {
    res.render('login'); // 返回登錄頁面
});

// POST /login  ← 新增這裡
router.post('/', function(req, res) {
    // 1. 獲取表單數據(需 body-parser 中間件)
    var username = req.body.username;
    var password = req.body.password;

    // 2. 業務邏輯驗證...
    if (validate(username, password)) {
        req.session.user = username;
        res.redirect('/dashboard');
    } else {
        res.render('login', { error: 'Invalid credentials' });
    }
});

module.exports = router;

必要中間件配置(app.js)

var bodyParser = require('body-parser');

// 解析 application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));
// 解析 application/json
app.use(bodyParser.json());

// 路由掛載
app.use('/login', require('./routes/login'));

注意:Express 4.16+ 內置 express.urlencoded() 和 express.json(),可替代 body-parser:

app.use(express.urlencoded({ extended: false }));
app.use(express.json());

路由方法速查表

HTTP 方法Express 路由方法典型用途
GETrouter.get()獲取資源、渲染頁面
POSTrouter.post()提交表單、創建資源
PUTrouter.put()完整更新資源
PATCHrouter.patch()部分更新資源
DELETErouter.delete()刪除資源
ALLrouter.all()匹配所有方法(中間件常用)

進階:路由參數與正則

router.post('/user/:id', handler);        // 參數
router.post('/report-:year-:month', handler); // 正則風格
router.post(/^\/api\/v\d+\/items$/, handler); // 正則對象

常見坑

  • 忘記 body-parser → req.body 為 undefined。
  • extended: true 使用 qs 庫解析嵌套對象,false 用 querystring,一般用 false。
  • 路由順序:具體路徑在前,通配符在後。

掌握 router.METHOD() 模式,是 Express 開發的基礎技能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved