node有哪些中间件
这篇文章给大家分享的是有关node有哪些中间件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
node中间件有:1、koa-bodyparser;2、koa-body;3、静态资源管理器koa-static;4、cors;5、koa-cors;6、koa-cors2设置请求头等等。
本文操作环境:Windows7系统,nodejs10.16.2版,Dell G3电脑。
node中间件类型:
node中间件就是封装在程序中处理http请求的功能。node中间件是在管道中执行。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。
中间件为主要的逻辑业务所服务,可分为:应用级中间件、路由级中间件、内置中间件、第三方中间件、错误级中间件。
node常用的中间件:
在node的学习过程中积累了许多好用的中间件。这些中间件大部分要个koa配合使用
1、koa-bodyparser
这个插件使用来解析前端post请求带来的参数的
//入口文件
const bodyParser = require('koa-bodyparser');
app.use(bodyParser({//设置可以接收的数据类型
enableTypes:['json', 'form', 'text']
}))
async function (ctx) {
console.log(ctx.request.body)
ctx.req.on('data',(data) => {
console.log(JSON.parse(data),'文件')
})
}
在没有引入koa-bodyparser的情况下只能通过ctx.req.on('data',callback)来获取参数
而引入中间件后只要ctx.request.body就可以获取到参数。相比第一种便利很多。
2、koa-body
这个插件是用来获取请求中上传的文件和文件信息比如图片过zip文件
const koaBody = require('koa-body')
app.use(koaBody({
multipart: true,
formidable: {
maxFileSize: 20 * 1024 * 1024 // 设置上传文件大小最大限制,默认2M
}
}))
在请求的处理中就可以直接通过ctx.request.files就能获取到所有上传的文件的信息。
注意!!!用了koa-body就不要在使用koa-bodyparser会冲突导致前端的post请求返回的status码为canceled
3、静态资源管理器koa-static
在本地测试的时候我上传了一张图片,然后将图片地址打印后是一长串的c://.../name/.png,这样虽然在本地能够访问但是如果放到服务器上就行不通了!
通过引入koa-static可以将静态文件地址指定到项目路径上的某个文件夹然后通过koa监听的端口直接http://192.168.0.177:3030/name.png就能访问图片了
const koaStatic = require('koa-static')
app.use(koaStatic('./public'))//括号中是设置的静态文件路径
4、cors、koa-cors、koa-cors2设置请求头
这几个中间件基本我都是用来配置跨域和请求头的信息
const cors = require('koa2-cors')
app.use(cors({
exposeHeaders: ['multipart/form-data','application/x-www-form-urlencoded']
}))
可以自己设置参数也可以不设置参数直接app.use(cors())就可以跨域。
这里说到跨域就顺便提一提原生node跨域的设置方法(同样可以设置请求头的各种配置)
app.use(async (ctx, next) => {
ctx.set('Access-Control-Allow-Origin', ctx.headers.origin)//'*'有可能会问题
ctx.set('Access-Control-Allow-Credentials', 'true')
ctx.set('Access-Control-Allow-Headers', 'Origin ,multipart/form-data, X-Requested-With, Content-Type, Accept')
await next()
})
感谢各位的阅读!关于“node有哪些中间件”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341