关于javascript:day26express

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) => {})
        必须放最所有路由上面,当下面路由都没有匹配到门路时会执行





























评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理