express基本使用
基本使用和各种中间件、session、跨域问题
import express from 'express'
import querystring from 'querystring'
import session from 'express-session'
import cors from 'cors'
const app = express()
const qwe = (req,res,next)=>{
console.log('qwe自定义中间件')
next()
}
//跨域问题
const server = app.createServer((req,res)=>{
//设置cors相关的请求头
res.setHeader('Access-Control-Allow-Origin','*')
res.setHeader('Access-Control-Allow-Methods','GET,POST')
res.setHeader('Access-Control-Allow-Header','Content-Type')
})
//使用cors中间件解决跨域问题
app.use(cors({
origin:'*',
methods:['GET','POST'],
allowedHeaders:['Content-Type']
}))
const direct = (req,res,next)=>{
console.log('测试指定挂载')
next()
}
//挂载自定义中间件,除错误中间件,其他中间件均要在使用前挂载
app.use(qwe)
//挂载内置中间件来解析客户端发送的数据
// app.use(express.urlencoded({extended:false}))+
// app.use(express.json())
//手写解析url内容的中间件
app.use(function (req,res,next){
let str = ''
req.on('data',(dt)=>{
str += dt
})
req.on('end',()=>{
req.body = querystring.parse(str)
next()
})
})
app.use(
session({
secret:'second',
resave:false,
saveUninitialized:true
})
)
app.post('/login',(req,res)=>{
if(req.body.username !='admin' || req.body.password !='123'){
return res.send({
status:1,
msg:'账号或密码错误'
})
}
req.session.user = req.body
req.session.isLogin = true
res.send({
status:0,
msg:'登录成功',
data:req.session
})
})
app.get('/home',(req,res)=>{
res.send('get成功')
console.log('请求成功.')
})
app.post('/user',(req,res)=>{
res.send(req.body)
console.log('请求成功')
})
app.get('/direct',direct,(req,res)=>{
res.send('中间件指定挂载请求')
})
//测试错误中间件
app.get('error',(req,res)=>{
throw new error('速速重启')
res.send('发不出去的消息')
})
//挂载错误中间件
app.use((error,req,res,next)=>{
console.log('存在错误'+error.message)
res.send('网络错误。。。'+error.message)
})
//启动服务器监听
app.listen(80,(req,res)=>{
console.log('01服务器在80端口启动')
})
浙公网安备 33010602011771号