nodejs(12)Expressミドルウェアmiddleware
6211 ワード
中間部品
クライアントの要求がサーバに到着した時、彼のライフサイクルはrequest--サーバー端処理--応答です.
サーバー側で処理する過程で、業務ロジックが複雑な時、開発とメンテナンスのために、処理することをいくつかのステップに分ける必要があります.ここでは各ステップは中間部品で、データは中間部品の操作対象です.
定義:中間部品は処理関数です.ただ、この関数は特殊で、三つのパラメータが含まれています.それぞれ
注意:中間部品の方法における三つのパラメータ:
req:要求対象;レスポンス対象next:nextは関数で、next()は呼び出されて、次の中間部品を呼び出す方法を表します.
app.useは中間部品をロードするものです.
テスト:
Expressフレームにおける中間部品の5種類の分類
アプリケーションレベルのミドルウェア:appにマウントされたミドルウェア
クライアントの要求がサーバに到着した時、彼のライフサイクルはrequest--サーバー端処理--応答です.
サーバー側で処理する過程で、業務ロジックが複雑な時、開発とメンテナンスのために、処理することをいくつかのステップに分ける必要があります.ここでは各ステップは中間部品で、データは中間部品の操作対象です.
定義:中間部品は処理関数です.ただ、この関数は特殊で、三つのパラメータが含まれています.それぞれ
req
res
・注意:中間部品の方法における三つのパラメータ:
req:要求対象;レスポンス対象next:nextは関数で、next()は呼び出されて、次の中間部品を呼び出す方法を表します.
function(req,res,next){
//...
next();
}
app.use(myrFun)は下の二つの前に書いてください.app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
ルーティング後または静的リソースを要求した後、応答を要求するライフサイクルは実質的に終了したため、この後に要求処理を加えることには意味がない.app.useは中間部品をロードするものです.
テスト:
const express = require('express')
const app = express()
//
app.use(function(req, res, next) {
console.log(' ')
req.a = 'aaa'
next()
})
// next(), ,
app.use(function(req, res, next) {
console.log(' ')
res.b = 'bbb'
next()
})
//
app.use(function(req, res, next) {
console.log(' ')
console.log(req.a)
console.log(res.b)
//
res.send(' ')
})
app.listen(3001, function() {
console.log('Express server is running at http://127.0.0.1:3001')
})
Expressフレームにおける中間部品の5種類の分類
アプリケーションレベルのミドルウェア:appにマウントされたミドルウェア
next
;ルートレベルのミドルウェア:routerオブジェクトにマウントされたミドルapp.get('URL ', (req, res, next)=> {})
エラーレベルのミドルウェア:コールバック関数には、4つのパラメータrouter.get('url ', (req, res, next)=>{})
唯一内蔵のミドルウェア:app.use((err, req, res, next)=>{})
第三者中間部品:非expressフレームで提供される場合、プログラマが手動でインストールして使用できる中間部品が必要です.express.static()
解析上位フォームデータ第三者のbody-parserを使うconst express = require('express')
const app = express()
//
const bodyParser = require('body-parser')
// app
app.use(bodyParser.urlencoded({extended: false })) // app.use
app.post('/adduser', (req, res) => {
// req.body , body-parser
res.json(req.body)
})
app.listen(3001, function() {
console.log('Express server is running at http://127.0.0.1:3001')
})
自分で中間部品をシミュレートします.const express = require('express')
const app = express()
const myBodyparse = require('./04myBodyparse')
//
app.use(myBodyparse)
app.post('/adduser', (req, res) => {
res.send(req.body)
})
app.post('/updateuser', (req, res) => {
res.send(req.body)
})
app.listen(3001, function() {
console.log('Express server is running at http://127.0.0.1:3001')
})
04 myBody parse.jsconst qs = require('querystring')
module.exports = function(req, res, next) {
let dtStr = ''
// , data
req.on('data', chunk => {
dtStr += chunk
})
// end ,
req.on('end', () => {
const result = qs.parse(dtStr)
req.body = result
console.log(req.body)
next()
})
}