Apakah perisian pertengahan Express? Bagaimana untuk menggunakannya dalam Nod? Artikel berikut akan memperkenalkan anda kepada penggunaan perisian pertengahan Express yang mudah. Saya harap ia akan membantu anda!
Perisian tengah secara khusus merujuk kepada pautan pemprosesan perantaraan proses perniagaan.
Apabila permintaan sampai ke pelayan Ekspres, beberapa perisian tengah boleh dipanggil secara berterusan untuk menyediakan permintaan.
Pada asasnya ia adalah fungsi pemprosesan fungsi
Nota: senarai parameter rasmi fungsi middleware , mesti mengandungi parameter seterusnya. Fungsi pemprosesan penghalaan hanya mengandungi req dan res,
// next参数必须在最后一个传入 const mw = (req, res, next) => { ... // next()必须在最后调用 next() }
Fungsi seterusnya adalah untuk melaksanakan pelbagai middleware berterusan memanggil Kunci, yang bermaksud memindahkan hubungan aliran ke perisian tengah atau laluan seterusnya.
Sebarang permintaan yang dimulakan oleh pelanggan akan mencetuskan perisian tengah selepas ia mencapai pelayan, yang dipanggil perisian pertengahan yang berkesan secara global. Dengan memanggil server.use (fungsi perisian tengah), anda boleh menentukan perisian tengah yang berkesan secara global Kod sampel adalah seperti berikut:
const mw = (req, res, next) => { next() } const mw1 = (req, res, next) => { next() } // 全局生效的中间件,中间件调用顺序以传入顺序为准 server.use(mw,mw1)
const mw = (req, res, next) => { next() } const mw1 = (req, res, next) => { next() } // 局部生效的中间件 server.get('/',mw,(req,res)=>{ res.send('路径:/') }) // 定义多个局部生效的中间件 // 1、直接逗号分隔 server.get('/',mw,mw1,(req,res)=>{ res.send('路径:/') }) // 2、或者使用数组包含 server.get('/',[mw,mw1],(req,res)=>{ res.send('路径:/') })
const mw = (req, res, next) => { // 添加属性 req.startTime=new Date() next() }
Perisian tengah yang terikat pada contoh apl melalui app.use() atau app.get() atau app.post() dipanggil perisian tengah peringkat aplikasi Contoh kod adalah seperti berikut :
// 全局生效的中间件(应用级别的中间件) server.use(mw,mw1) // 局部生效的中间件(应用级别的中间件) server.get('/',mw,mw1,(req,res)=>{ res.send(`请求进入服务器的时间:${req.startTime}`) })
Perisian tengah yang terikat pada tika express.Router() dipanggil perisian tengah peringkat penghalaan. Penggunaannya tidak berbeza dengan perisian pertengahan peringkat aplikasi. Walau bagaimanapun, perisian tengah peringkat aplikasi terikat pada contoh apl dan perisian pertengahan peringkat laluan terikat pada tika penghala Contoh kod adalah seperti berikut:
const router = require('./router/router') // 路由级别的中间件 router.use((req,res,next)=>{ next() })
Peranan middleware peringkat ralat: Ia digunakan khas untuk menangkap ralat luar biasa yang berlaku dalam keseluruhan projek, dengan itu menghalang projek daripada ranap secara tidak normal.
Format: Fungsi pemprosesan fungsi middleware tahap ralat mesti mempunyai 4 parameter formal Susunan parameter formal dari hadapan ke belakang ialah (err, req, res, next).
Nota: Perisian tengah tahap ralat mesti didaftarkan selepas semua laluan!// 人为制造错误 server.get('/err', (req, res) => { throw new Error('人为抛出错误!!!') res.send('err Page') }) // 定义错误级别的中间件 server.use((err, req, res, next) => { console.log('发生了错误:' + err.message); res.send('Error:'+err.message) next() })
Sejak versi Express 4.16.0, Express mempunyai 3 perisian tengah yang biasa digunakan terbina dalam, yang meningkatkan kecekapan pembangunan dan pengalaman projek Express dengan sangat baik:
// 配置解析application/json格式数据的内置中间件 server.use(express.json()) // 配置解析application/x-www-form-urlencoded格式数据的内置中间件 server.use(express.urlencoded({ extended: false })) // 测试解析json的内置中间件 server.post('/user',(req,res)=>{ // 在服务器,可以使用req.body这个属性来接受客户端发送过来的请求数据 // 默认情况下,如果不配置解析表单数据的中间件,则req.body默认等于undefined console.log(req.body); res.send('ok') }) // 测试解析urlencoded的内置中间件 server.post('/book',(req,res)=>{ console.log(req.body) res.send('book ok') })
Tidak dibina secara rasmi ke dalam Express, tetapi perisian tengah yang dibangunkan oleh pihak ketiga, dipanggil bahagian perisian tengah pihak ketiga. Dalam projek itu, anda boleh memuat turun dan mengkonfigurasi perisian tengah pihak ketiga atas permintaan, dengan itu meningkatkan kecekapan pembangunan projek. Contohnya: Dalam versi sebelum
, perisian tengah pihak ketiga sering digunakan untuk menghuraikan data kandungan permintaan. Langkah penggunaan adalah seperti berikut: express@4.16.0
body-parser
npm install body-parser
Nota: Perisian tengah ekspres.urlenkod terbina dalam Express dirangkumkan lagi berdasarkan penghurai badan perisian tengah pihak ketiga.
Untuk lebih banyak pengetahuan berkaitan nod, sila lawati: tutorial nodejs!
Atas ialah kandungan terperinci Apakah perisian pertengahan Express? Bagaimana untuk menggunakannya dalam Node?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!