express的介绍
express官网:https://www.expressjs.com.cn/
作用
Express可以快速搭建一个完整功能的网站。
好处
Express的作用于node.js中的内置的http模块类似,都是用来创建web服务的。但是http模块使用起来比较繁琐。开发效率低,Express是基于http模块封装出来的,能够极大的提高开发效率。
关系
http与Express的关系:JavaScript原生操作DOM 与 JQuery的关系。
安装Express
在项目的根目录下,输入【npm init】初始化。
运行
npm i express
创建服务器
const express = require("express")
//创建服务
let app = express();
app.get("/",(req,res)=>{
res.send("Hello,world!")
})
app.listen(3000,()=>{console.log("服务器已启动");})
路由
什么是路由
路由就是网址,web服务器会根据用户输入的不同路径和请求方式,响应不同的页面。
基本格式
路由的组成:请求地址+请求方式。
http常见的请求方式:post(添加),get(获取)put(更新)delete(删除)
app.method(path,handler)
//method:请求方式
//path:请求路径
//handler:请求的处理函数。
匹配规则:
每当一个请求到达服务器后,需要经过路由的匹配。匹配请求地址和请求方式,匹配成功后,才会调用对应的处理函数。
模块化路由
为了方便对路由进行管理,Express不建议我们将所有的路由都罗列在一个文件中。
我们可以将路由分类,将同一类的路由抽离为一个模块。
1. 创建路由模块对应的js文件
2. 调用express.Rotuer()方法创建路由对象。
3. 在路由对象上挂载具体的路由。
4. 使用module.exprots导出路由对象
5. 在app.js中使用app.use方法来注册路由模块。
order.js文件如下
const express = require("express");
/**
* 订单路由模块
*/
// 2.调用express.Rotuer()方法创建路由对象。
const order = express.Router();
//3.在路由对象上挂载具体的路由。
order.post("/order/add",(req,res)=> res.send("新增了一个订单"));
order.post("/order/edit",(req,res)=> res.send("修改了订单信息"));
order.post("/order/del",(req,res)=> res.send("删除了一个订单"));
order.get("/order/list",(req,res)=> res.send("查询所有的订单信息"));
//4.使用module.exprots导出路由对象
module.exports = order;
app.js文件如下
//在app.js中使用app.use方法来注册路由模块。
app.use(require("./order"));
获取参数
获取get参数
通过req.query即可获取get参数。 req.query是一个对象,包含所有的get参数。
//请求路径:http://localhost:3000/list?page=2&pageSize=3
//分页查询 默认一页显示3条数据
app.get("/list",(req,res)=>{
//解构赋值
let {page,pageSize} = req.query;
res.send(page,pageSize);
})
获取post参数
需要先对post参数进行解析配置,然后通过req.body来获取post参数
app.use(express.urlencodeed({extended:false}));
//接受post请求。
app.post("/add",(req,res)=>{
//req.body获取post参数
res.send(req.body)
})
获取动态参数
通过req.params对象来获取动态参数
//动态参数 请求地址: http://127.0.0.1:3000/video/456/hewangle
app.get("/video/:id/:name",(req,res)=>{
res.send(req.params);
})