- Published on
Express使用一
- Authors
- Name
- Et cetera
首先介绍原生基于node.js中http模块开启服务
const http = require('http')
// 创建一个服务器
const server = http.createServer((request, response) => {
res.end('ONE OK ROCK')
})
// 开启对应服务器,并监听对应端口
// 端口通常1025~65535之间
server.listen(3000, () => {
console.log('http server success')
})
同样使用express开一个服务对比
// express 基本启动服务
const express = require('express')
const app = express()
app.listen(3000, () => {
console.log('express服务启动成功')
})
express优化部分
- express 对比 http 服务在路由上不用通过 request 对象的 url 属性进行判断
// http 中
const server = http.createServer((request, response) => {
const url = req.url
const method = req.method
if (url === '/login' && method === 'POST') res.end('Loign')
})
// express 直接监听路由以及请求方法
app.post('/login', (request, respose, next) => {
res.end('登录成功')
})
// 也可以通过常规中间件
app.use((req, res, next) => {
if (req.url === '/login') res.end('登录成功')
})
// 路径匹配中间件
// 只会限制路径,对请求方法没有限制
app.use('/login', (req, res, next) => {
// 同样可以通过req.method限制请求方法
res.end('登录成功')
})
多个中间件的注册方式
app.get(
'/',
(req, res, next) => {
console.log('aaa')
// next 和终止操作不能同时存在,如:res.end(),res.send()
next()
},
(req, res, next) => {
res.send('<p>Second 2</p>')
}
)
express简介:express是一个路由和中间件的Web框架,本身功能有限;而其本质上是一系列中间件函数的调用
中间件的本质是传递给express的一个回调函数:共接收三个参数
- request对象
- response对象
- nest函数(在express中定义的用于执行下一个中间件的函数)
解析express.json()方法
app.use((req, res, next) => {
if (req.headers['content-type'] === 'application/json') {
req.on('data', (data) => {
const userInfo = JSON.parse(data.toString())
req.body = userInfo
})
req.on('end', () => {
next()
})
} else {
next()
}
})
// 上面基本逻辑等于
app.use(express.json())
app.post('/login', (req, res, next) => {
console.log(req.body)
res.end('登录成功')
})