欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:Express框架---中間件

柚子快報(bào)激活碼778899分享:Express框架---中間件

http://yzkb.51969.com/

使用中間件

Express是一個(gè)自身功能極簡(jiǎn),完全是路由和中間件構(gòu)成一個(gè)web開(kāi)發(fā)框架:從本質(zhì)上來(lái)說(shuō),一個(gè)Express應(yīng)用就是在調(diào)用各種中間件。

中間件是可以訪(fǎng)問(wèn)請(qǐng)求對(duì)象 (req),響應(yīng)對(duì)象(res)以及next應(yīng)用程序請(qǐng)求-響應(yīng)周期中的函數(shù)。

中間件就是在請(qǐng)求后,響應(yīng)前要執(zhí)行的函數(shù),中間件就是函數(shù)使用app.use() 方法,可以給express應(yīng)用,添加任意中間件功能函數(shù)。

中間件分類(lèi)

內(nèi)置中間件 自定義中間件 錯(cuò)誤處理中間件 第三方中間件

1.??????內(nèi)置中間件

從版本4.x開(kāi)始,

Express不再依賴(lài)于

Connect。之前包含在

Express中的中間件功能現(xiàn)在位于單獨(dú)的模塊中; 查看

中間件功能列表。

Express具有以下內(nèi)置中間件功能:

express.static提供靜態(tài)資源,如HTML文件,圖像等。express.json使用JSON有效負(fù)載解析傳入的請(qǐng)求。注意:適用于Express 4.16.0+express.urlencoded用URL編碼的有效負(fù)載解析傳入的請(qǐng)求。 注意:適用于Express 4.16.0+

1. express.static()

指定一個(gè)目錄為靜態(tài)資源目錄

客戶(hù)端可以直接訪(fǎng)問(wèn)靜態(tài)資源目錄中的文件(目錄暴露出來(lái))

代碼示例:

app.use(express.static(path.join(__dirname,"public")))

2.?express.json()

解析post方式提交的application/json格式的數(shù)據(jù)

代碼示例:

app.use(express.json())

3. express.urlencoded()

解析post方式提交的application/x-www-form-urlencoded 格式的數(shù)據(jù)

代碼示例:

app.use(express.urlencoded({extended:false}))

2.自定義中間件

根據(jù)需求自己定義中間件

代碼示例:

//自定義中間件

app.use(function (req, res, next) {

console.log(Date.now() + ':我是中間環(huán)節(jié)....');

next();

})

?

//跨域

app.use((req, res, next) => {

res.header("Access-Control-Allow-Origin", "*");//解決跨域

next() //轉(zhuǎn)發(fā)請(qǐng)求

})

//調(diào)用postData函數(shù),會(huì)得到一個(gè)函數(shù)

let postData = function () {

return function (req, res, next) {

let arr = []

req.on('data', chunk => {

arr.push(chunk)

})

req.on("end", () => {

// console.log(Buffer.concat(arr).toString());

req.body = Buffer.concat(arr).toString();

next();

})

}

}

//自定義中間件 ---->取出post參數(shù)

app.use(postData())

3.錯(cuò)誤處理中間件

錯(cuò)誤處理中間件總是需要四個(gè)參數(shù)。您必須提供四個(gè)參數(shù)以將其標(biāo)識(shí)為錯(cuò)誤處理中間件函數(shù)。即使您不需要使用該next對(duì)象,也必須指定它以保持簽名。否則,該next對(duì)象將被解釋為常規(guī)中間件,并且將無(wú)法處理錯(cuò)誤。

以與其他中間件函數(shù)相同的方式定義錯(cuò)誤處理中間件函數(shù),除了四個(gè)參數(shù)而不是三個(gè),特別是簽名(err, req, res, next)):

?注意:錯(cuò)誤處理中間件,一般出現(xiàn)在代碼的下面

//錯(cuò)誤處理中間件

app.use(function(req,res){

res.send({

code:500,

msg:"地址錯(cuò)誤,請(qǐng)檢查后重新訪(fǎng)問(wèn)"

})

})

4.第三方中間件

使用第三方中間件為Express應(yīng)用程序添加功能。

安裝Node.js模塊以獲得所需的功能,然后在應(yīng)用程序級(jí)別或路由器級(jí)別將其加載到您的應(yīng)用程序中。?

示例:

1. serve-favicon

可以設(shè)置前端頁(yè)面訪(fǎng)問(wèn)時(shí)的圖標(biāo)

安裝:

npm install server-favicon

引入:

const favicon=require("serve-favicon")

?代碼示例:

app.use(favicon(path.join(__dirname,"favicon.ico")))

2. svg-captcha

是一個(gè)可以生成驗(yàn)證碼的第三方中間件

安裝:

npm install svg-captcha

?引入:

//導(dǎo)入驗(yàn)證碼生成中間件

const svgCaptcha= require("svg-captcha")

代碼示例:

//生成驗(yàn)證碼

router.get('/code',(req,res)=>{

//創(chuàng)建驗(yàn)證碼對(duì)象

// const captcha= svgCaptcha.create();

const captcha= svgCaptcha.create({

size:5, //驗(yàn)證碼字符個(gè)數(shù)

ignoreChars:"0oi1l",//忽略字符

noise:5,//干擾線(xiàn)

background:"#eeeeee",

color:true,//字符是否有顏色

});

console.log(captcha.text);

res.type("svg");//設(shè)置媒體類(lèi)型(MIME)

res.send(captcha.data);//將svg格式的圖片響應(yīng)給前端

})

3.?formidable

文件上傳

安裝:

npm install formidable

?引入:

const formidable=require(“formidable”)

代碼示例:

服務(wù)器端代碼:

//文件上傳

app.post("/upload", (req, res) => {

const fd = formidable({//配置項(xiàng)

// encoding:""http:// 編碼

// uploadDir:"",//上傳文件保存目錄

//filename:""

uploadDir: path.join(__dirname, "temp")

});

//解析文件----接收文件

fd.parse(req, function (err, fields, files) {

if (err) {

res.send("上傳失?。? + err)

return;

}

//上傳成功

// console.log("fields:", fields);//字段 { usernmae: '李四' }

// console.log("files:", files);//文件信息

//將緩存文件,處理為正常文件

//1.取后綴名

let extName = path.extname(files.myfile.originalFilename) //從文件的默認(rèn)名稱(chēng)中,取出后綴名 xx.jpg---> .jpg

//2,生成新文件

let oldPath = files.myfile.filepath;//舊路徑

let newPath = oldPath + extName//新路徑

fs.renameSync(oldPath, newPath)

res.send("上傳成功")

})

});

前端代碼:

表單格式提交


補(bǔ)充

前后端數(shù)據(jù)交互總結(jié)

請(qǐng)求方法編碼格式前端要傳輸?shù)臄?shù)據(jù)格式后端如何獲取應(yīng)用場(chǎng)景GETurl地址后面(querystring)url?key1=value1&key2=value2不需要中間件:req.query獲取數(shù)據(jù)POSTapplicaion/x-www-form-urlencodedform-data: key1=value1&key2=value2express.urlencoded( { extend:true } )提交數(shù)據(jù)POSTapplicaion/json(只能通過(guò)ajax)request-payload: '{ "key1":"value1","key2":"value2" }'express.json()POSTmutilpart/form-data(可以使用表單)文件流文件上傳DELETE同post刪除數(shù)據(jù)PUT同post更新數(shù)據(jù)

柚子快報(bào)激活碼778899分享:Express框架---中間件

http://yzkb.51969.com/

精彩內(nèi)容

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19188401.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪(fǎng)問(wèn)

文章目錄