1. 程式人生 > 其它 >node Express框架使用

node Express框架使用

技術標籤:nodejs

Express

建立應用

建立專案根目錄

mkdir express-demo
cd express-demo

初始化npm配置

npm init
npm install express --save

package.json檔案內容

{
  "name": "express-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js"
, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "gx", "license": "ISC", "dependencies": { "express": "^4.17.1" } }

新建index.js檔案

let express = require('express')
let app = express()
app.listen(8000)

app.get('/', (req, res) => {
  res.send('Hello Express')
})

一個簡單的express專案就搭建完成了

執行node命令啟動專案

node index.js

執行結果

在這裡插入圖片描述

路由匹配

// 匹配請求url: /aa /aba /abcda等
app.get('/a*a', (req, res) => {
  res.send(req.originalUrl)
})

// 匹配請求url: /a和/ab
app.
get('/ab?', (req, res) => { res.send(req.originalUrl) }) // 匹配請求url: /a/bb等以/a/開頭的url app.get('/a/', (req, res) => { res.send(req.originalUrl) }) // 支援正則表示式匹配url app.get('/abcd+', (req, res) => { res.send(req.originalUrl) })

路由引數

// 將引數userId放入url中
app.get('/:userId', (req, res) => {
  res.send(req.params)
})

// 使用分隔符'-'和'.'分割url中的引數
app.get('/user/:userId-:userName.:userAge', (req, res) => {
  res.send(req.params)
})

在這裡插入圖片描述

路由處理器

// 傳入多個回撥處理器,除了最後一個,前面的回撥函式最後面要呼叫next()
app.get('/routers/handlers-1', (req, res, next) => {
  console.log('first handler')
  next()
}, (req, res, next) => {
  console.log('second handler')
  next()
}, (req, res) => {
  console.log('last handler')
  res.send('last handler')
})
// 陣列形式傳入回撥處理器
let handler1 = (req, res, next) => {
  console.log('handler1')
  next()
}
let handler2 = (req, res, next) => {
  console.log('handler2')
  next()
}

app.get('/routers/handlers-2', [handler1, handler2], (req, res) => {
  console.log('handler3')
  res.send('handler3')
})

路由分級函式:app.route()

使用app.route()處理同一個url不同請求方法的介面請求

app.route('/manager')
  .get((req, res) => {
    res.send('get')
  })
  .post((req, res) => {
    res.send('post')
  })
  .put((req, res) => {
    res.send('put')
  })

路由分級函式:app.use()

app.use()可以將一類介面建立檔案單獨處理,方便維護
建立一個js檔案user-handler.js

let express = require('express')
let router = express.Router()

router.get('/:userId/get', (req, res) => {
  console.log(req.baseUrl); // 輸出結果 /user
  console.log(req.url); // 輸出結果 /11/get
  console.log(req.originalUrl); // 輸出結果 /user/11/get
  res.send(req.params.userId)
})
  .get('/post', (req, res) => {
    console.log(req.url);
    res.send('/post')
  })

module.exports = router

在主檔案中匯入並使用

app.use('/user', require('./user-handler'))

/user/開頭的url請求會分配到user-handler.js去處理