NodeJS中对于express模块的使用

NodeJS中对于express模块的使用

  • expres是基于Node.js平台、快速、开放的web开发框架
  • 下载 npm install expressnpm i express
  • 使用(创建web服务器)
  1. 引入express模块 const express = require('express')
  2. 创建web服务器 var app = express()
  3. 监听端口 app.listen(8080) 端口号可以自定义,但要保证端口不冲突

路由

  • 浏览器向服务器发起请求,Web服务器根据url和请求的方法作出响应

每一个路由只能处理一个请求

  1. 路由三要素:请求的方法(post、set)请求的url响应(回调函数)
get请求下的数获取

app.get(url, callback)
app.get(url,function(request,response){...})

  • 回调函数中常见方法和变量
  1. response(响应对象)
    • send() 响应的内容,路由中只使用一次
    • sendFile() 响应文件,要求必须使用绝对路径__dirname
    • redirect() 响应的重定向,跳转到另一个url
  2. request (请求对象)
    • method 请求的方法
    • url 请求的url
    • headers 请求头信息
    • query 获取请求形式为查询字符串形式的数据,格式为对象
    • params 获取路由器传递的参数
      请求路径:http://localhost:8080/a/123/34
      服务器端:app.get('/a/:first/:second',function(request,response){// request.param{first:'123',second:'34'}})
post请求下的数据获取
  • post请求和get请求对于response操作都差不多
request.on('data',function(mydata){
//mydata为buffer格式
	mydata.toString()  // 格式为查询字符串,需要解析为对象
	var obj = querystring.parse(mydata.toString()) //需要通过querystring模块对得到的字符串进行解析得到参数对象
})

路由器 (管理路由)

  • 作用:路由在使用的过程中,不同模块下的路由可能出现相同的url,把同一模块下的路由放到特定的路由器,避免不同模块下的同名路由混用
  • var router = express.Router() 创建路由器
  • module.exports = router 抛出路由器给外部使用
  1. 创建路由器
// user.js
//1.1路由器是express下的一个功能
  const express=require('express');
//1.2创建路由器对象
  var router=express.Router();
//1.3往路由器中添加路由
router.get('/list1',function(req,res){
	res.send('用户列表1');
});
router.get('/list2',function(req,res){
	res.send('用户列表2');
});
//1.4导出路由器对象
  module.exports=router;
  1. 在Web服务器中使用路由器
// app.js
//2.1引入路由器模块
  const userRouter=require('./user.js');
//2.2使用路由器,挂载到特定的url
  app.use('/user',userRouter);
  1. 访问:http://localhost:8080/user/list1
    http://localhost:8080/user/list2

中间件

  • 为主要的业务逻辑服务,接收到请求,以及作出响应(个人理解类似于插件的安装过程,安装以后才能正常使用)
  • 分类:应用级中间件、路由中间件、内置中间件、第三方中间件、错误处理中间件
  1. 路由中间件
// 配合引入路由器时使用
app.use('/user',userRouter)
app.use('/product',productRouter)
  1. 应用级中间件(自定义中间件)
app.use('/reg',function(req,res,next){
// 对请求首先进行一定的限制操作 ex:判空操作、校验操作等
         //拦截url为/reg的路由
           next();  /next是一个函数,表示执行下一个中间件或者路由
   });
  1. 内置中间件
// 把所有的静态资源托管到了某个目录,如果浏览器请求静态资源,自动到该目录下寻找,无需创建路由
app.use(express.static('托管的目录路径'));

如果一个服务器下有不同托管文件中有相同的文件名,按照顺序选择第一个文件

  1. 第三方中间件
//以解决post请求中需要对传递过来的参数进行解析为例
// body-parser中间件的使用
//1.下载安装
npm i body-parser;
//引入中间件模块
const  bodyParser=require('body-parser');
//3.使用中间件,urlencoded将post请求的数据解析为对象
app.use(bodyParser.urlencoded({
          extended:false  //不使用第三方的qs模块解析查询字符串为对象,而是使用系统的     
                            querystring模块
}));
//4.在post请求的路由中
  req.body   //返回为对象形式

对于请求栏获取数据的方式

名称形式(浏览器地址栏)(路由)获取
get传递lid=1&pname=dellreq.query
路由传递/shopping/4999req.params
post传递无法通过url查看req.body前提是要使用中间件 body-parser
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Node.js,Multer是一个间件,用于处理HTTP请求的文件上传。它基于busboy构建,可以方便地处理表单数据的文件上传。 要使用Multer,首先需要安装它。可以通过以下命令使用npm进行安装: ``` npm install multer ``` 安装完成后,可以在代码引入Multer并配置它。以下是一个简单的示例: ```javascript const express = require('express'); const multer = require('multer'); const app = express(); // 配置Multer const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/'); // 指定文件保存的目录 }, filename: function (req, file, cb) { cb(null, file.originalname); // 指定保存的文件名 } }); const upload = multer({ storage: storage }); // 处理文件上传的路由 app.post('/upload', upload.single('file'), function (req, res, next) { // req.file 包含上传的文件信息 res.send('文件上传成功'); }); app.listen(3000, function () { console.log('服务器已启动'); }); ``` 在上面的示例,首先引入express和multer模块。然后创建了一个express应用,并配置了Multer。通过`diskStorage`方法可以指定文件保存的目录和文件名。在示例,文件将保存在`uploads/`目录下,并使用原始文件名作为保存的文件名。 接下来,通过`multer()`方法创建了一个Multer实例,并将其作为间件应用到路由上。在示例使用了`upload.single('file')`来处理单个文件上传,其`'file'`是表单文件字段的名称。 最后,定义了一个处理文件上传的路由`/upload`,在这个路由可以通过`req.file`获取上传的文件信息。 以上就是使用Multer处理文件上传的基本步骤和示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

unravel space

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

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

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

打赏作者

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

抵扣说明:

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

余额充值