node Express框架使用

本文介绍了如何使用Express创建一个简单的web应用,包括初始化项目、设置路由、路由匹配、路由参数、路由处理器和路由分级函数的使用。通过实例展示了如何处理GET、POST等不同请求方法,并演示了如何组织和导入路由文件,实现更高效的接口管理。
摘要由CSDN通过智能技术生成

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去处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bdawn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值