day26-express

概念:基于nodejs的http服务器封装好的框架

*一、使用步骤

下载:npm init ---->npm i express
导出:const express = require('express')
创建服务器:const app = express()
监听端口号:app.listen(端口号)
处理请求

二、请求的处理

***1.路由方法-----针对不同的请求方式,有不同的方法处理
    get    post    put    delete    all(处理任意请求,需完全匹配)    use(处理任意请求,匹配开头)

2.路径匹配
    完全匹配
    不完全匹配---?---修饰前面字符最多出现一次
    不完全匹配---+---修饰前面字符最少出现一次
    不完全匹配---*---表示*占位的这个地方可以是任意内容
    正则匹配---使用正则表达式代表路径
    ***restful风格路径---路径/:id-则此时id必传;路径/:id?-此时id非必传
    传统方式请求路径的get传递参数获取-----req.qurey
    restful风格传递参数获取-----req.params

3.处理函数
    使用一个函数处理此次请求
    使用多个函数处理此次请求---最后一个函数前面的所有函数都需要添加第三个参数next,调用next函数才能执行下一步
    将多个函数放在一个数组中,用数组处理请求
    数组+函数
    通过路由器对象处理
        创建:router = express.Router()
        app用use让路由对象处理:app.use(路径,router)
        router处理跟app处理语法一致----router.get();router.post()
        路由器模块化:利用use方法和路由器对象,将处理的具体代码放在其他文件中,方便分工合作
        注意:完整路径 - use路径 = router路径

***4.请求信息
    请求方法:req.method
    客户端ip:req.ip
    请求头:req.headers
    请求路径:req.url

***响应方法
    res.end:没有响应头的内容
    res.send:带有响应头的内容
    res.json:数组或对象内容
    res.redirect:跳转到其他路由
    res.sendFile:读取页面并响应
        内置变量:__dirname:代表当前文件所在文件夹的绝对路径
    res.sendStatus:设置响应状态码

*三、中间件

概念:在最后一次响应之前,所经历的那些函数就叫中间件-----中间件函数一定有next

1.内置中间件
    静态资源托管:app.use(路径,express.static(静态资源文件夹))
    全局内置中间件-----获取post传递的数据
        app.use(express.uelencoded({extended:false}))----将post来的数据放在req上,req.body
     局部中间件---将代码放到局部的参数中,只在当前作用域有效

2.自定义中间件
    自定义获取post数据的中间件,中间件的req和最终执行函数中的req是同一个,所以可以在中间件给req添加属性,在最终路由的req就能获取到这个数据

3.第三方中间件
    下载模块:npm i body-parser
    导入这个模块:const bodyParser = require('body-parser')
    使用这个中间件:app.use(bodyParser.urlencoded({extended:false}))

4.异常处理中间件
    app.use((err,req,res,next) => {})----err是报错信息
        必须放在所有路由下面---当上面的路由报错了会在这里捕捉到错误并执行

5.404中间件
    app.use((req,res,next) => {})
        必须放最所有路由下面,当上面路由都没有匹配到路径时会执行






























嗯嗯
1 声望0 粉丝