Rumah  >  Artikel  >  hujung hadapan web  >  Apakah perisian pertengahan Express? Bagaimana untuk menggunakannya dalam Node?

Apakah perisian pertengahan Express? Bagaimana untuk menggunakannya dalam Node?

青灯夜游
青灯夜游ke hadapan
2022-02-10 19:01:352042semak imbas

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!

Apakah perisian pertengahan Express? Bagaimana untuk menggunakannya dalam Node?

1. Apakah itu perisian tengah Ekspres

Perisian tengah secara khusus merujuk kepada pautan pemprosesan perantaraan proses perniagaan.

2. Proses memanggil perisian tengah Ekspres

Apabila permintaan sampai ke pelayan Ekspres, beberapa perisian tengah boleh dipanggil secara berterusan untuk menyediakan permintaan.

3. Format Middleware

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()
}

4. Peranan fungsi next()

Fungsi seterusnya adalah untuk melaksanakan pelbagai middleware berterusan memanggil Kunci, yang bermaksud memindahkan hubungan aliran ke perisian tengah atau laluan seterusnya.

5. Perisian tengah yang berkesan secara global

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)

6. Perisian tengah berkesan tempatan

Perisian tengah separa hanya berkuat kuasa pada laluan penghalaan tertentu

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('路径:/')
})

7 Peranan perisian tengah

Dikongsi antara berbilang perisian tengah Permintaan dan res yang sama. Berdasarkan ciri ini, kami boleh menambah atribut atau kaedah tersuai secara seragam pada objek req atau res dalam perisian tengah huluan untuk digunakan oleh perisian tengah hiliran atau penghalaan.

const mw = (req, res, next) => {
    // 添加属性
    req.startTime=new Date()
    next()
}

8 Lima perkara yang perlu diberi perhatian tentang perisian tengah Ekspres

  • Pastikan anda mendaftarkan perisian tengah sebelum membuat penghalaan

  • Permintaan yang dihantar daripada klien boleh diproses dengan memanggil berbilang middleware secara berterusan

  • Selepas melaksanakan kod perniagaan middleware, jangan lupa untuk memanggil Fungsi next()

  • Untuk mengelakkan kekeliruan logik kod, jangan tulis kod tambahan selepas memanggil fungsi next()

  • Apabila memanggil berbilang middleware secara berterusan , objek req dan res dikongsi antara berbilang perisian tengah

9 Klasifikasi perisian tengah Ekspres

  • Perisian tengah peringkat aplikasi

  • perisian tengah peringkat laluan
  • perisian tengah peringkat ralat
  • perisian tengah terbina dalam ekspres
  • Perisian tengah pihak ketiga
  • Pengenalan terperinci:

    Perisian tengah peringkat aplikasi
  • 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 peringkat penghalaan
  • 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()
    })
  • Peringkat ralat. middleware
  • 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()
    })
  • Perisian tengah terbina dalam Ekspres
  • 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:

      perisian tengah terbina dalam cepat.ekspres.statik untuk mengehos sumber statik, seperti: fail HTML, imej, gaya CSS, dsb. (tiada keserasian)
    • express.json menghuraikan data kandungan permintaan dalam format JSON (dengan keserasian, Hanya tersedia dalam versi 4.16.0)
    • express.urlencoded parses meminta data kandungan dalam format URL-encoded (serasi, hanya tersedia dalam versi 4.16.0)
    // 配置解析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')
    })
  • Perisian tengah pihak ketiga
  • 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.0body-parser

      Jalankan
    • Pasang middleware

      npm install body-parser

    • Gunakan memerlukan untuk mengimport middleware
    • Panggil
    • untuk mendaftar dan menggunakan perisian tengah

    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!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam