华清远见重庆中心—Node.js个人总结

服务器跨域请求

const express = require('express');

const cors = require('cors')

const path = require("path");

const app = express()

// 若不记得跨域响应头有哪些,可以使用 cors 包

// app.use(cors())

// 添加一个中间件拦截所有请求

// app.all('*', (req, res, next) => {

// // 设置允许跨域的响应头

// res.setHeader('Access-Control-Allow-Origin', '*')

// res.setHeader('Access-Control-Allow-Methods', '*')

// res.setHeader('Access-Control-Allow-Headers', 'Content-Type')

// next()

// })

app.use('/', express.static(path.join(__dirname, 'public')))

app.get('/test', (req, res) => {

res.json({msg: 'ok'})

})

app.get('/jsonp', (req, res) => {

// const {callback} = req.query

// res.setHeader('Content-Type', 'text/javascript')

// const params = {x: 1, y: 2}

// res.send(`${callback}('${JSON.stringify(params)}')`)

res.jsonp({x: 1, y: 2})

})

app.listen(80, () => {

console.log(`start on: http://127.0.0.1`)

})

cookie的基本操作

const express = require('express');

const cookieParser = require('cookie-parser')

const app = express()

// 安装处理cookie的中间件

app.use(cookieParser())

app.get('/test', (req, res) => {

// 读取cookie

console.log(req.cookies)

// 设置cookie

res.cookie('name', JSON.stringify({name: '张三', sex: 'male'}), {/*maxAge: 60000,*/ httpOnly: false})

res.json({msg: 'ok'})

})

app.listen(80, () => {

console.log(`start on: http://127.0.0.1`)

})

session的基本操作

const express = require('express');

const session = require('express-session')

const app = express()

// 配置session

app.use(session({

// 指定密钥 必填

secret: 'this is my key'

}))

app.get('/test', (req, res) => {

// 读取session

console.log(req.session)

// 设置session

req.session.count = req.session.count ? req.session.count + 1 : 1

res.json({count: req.session.count})

})

app.get('/test2', (req, res) => {

res.json({count: req.session.count})

})

app.listen(80, () => {

console.log(`start on: http://127.0.0.1`)

})

中间件和异常处理

const express = require('express');

const ah = require('express-async-handler')

const app = express();

// 若不记得异步处理器该如何写的话,可以安装 express-async-handler 包来代替

// 异步处理器

// 用于捕获异步函数中的异常

// asyncFunction 是一个异步方法

function asyncHandler(asyncFunction) {

// 返回一个接口函数

return (req, res, next) => {

asyncFunction(req, res).catch(next)

}

}

// 声明中间件

app.use((req, res, next) => {

// req, res 就是接口中的请求对象和响应对象

// next 函数在中间件中必须调用

// 调用next有两种情况

// 情况一: 不带参数的调用

// 含义: 放行

console.log('中间件1')

next()

// 情况二: 带参数

// 含义: 直接将参数返回给页面

// next(new Error(`这是next返回给页面的内容,强制被认为是异常,所以状态码为500`))

})

// app.get('/test1', async (req, res, next) => {

// // 接口中的next作用和中间件中一样,但是接口中的next必须传参数

// // next(new Error('test1 error'))

// // 接口内抛出的异常也能被最后个中间件捕获

// // throw new Error('test1 error')

// res.json({msg: 1})

// })

// app.get('/test1', asyncHandler(async (req, res) => {

app.get('/test1', ah(async (req, res) => {

throw new Error('test1 error')

res.json({msg: 1})

}))

app.use((req, res, next) => {

console.log('中间件2')

next()

})

app.get('/test2', (req, res, next) => {

console.log(abc)

res.json({msg: 2})

})

app.use((req, res, next) => {

console.log('中间件3')

next()

})

app.get('/test3', (req, res) => {

res.json({msg: 3})

})

// 在所有中间件的末尾,添加一个异常处理的中间件

// 此异常捕获中间件参数必须以 err 开头

// 此中间件的触发条件有:

// 1. 任意接口抛出异常

// 2. 任意接口或中间件的next调用后传了参数

app.use((err, req, res, next) => {

// 打印异常

console.error(err)

res.json({success: false, msg: err.message})

// next(err)

})

app.listen(80, () => {

console.log('server start on: http://127.0.0.1')

})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值