Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menyahmistifikasi mekanisme pemintas di Golang

Menyahmistifikasi mekanisme pemintas di Golang

王林
王林asal
2024-04-08 08:39:021168semak imbas

Pemintas ialah corak reka bentuk yang membolehkan tingkah laku tersuai dimasukkan sebelum dan selepas pelaksanaan kaedah In Go, ia boleh dilaksanakan melalui perisian tengah net/http. Ia mempunyai kelebihan kebolehskalaan, kebolehgunaan semula, kebolehujian, dsb., dan boleh digunakan dalam senario seperti pengesahan, kebenaran, caching, pengelogan dan pengendalian ralat tersuai. . Dalam Go, pemintas boleh dilaksanakan dengan menulis perisian tengah net/http.

揭秘 Golang 中的拦截器机制Pelaksanaan khusus

Berikut ialah contoh penggunaan net/http untuk menulis pemintas:

package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    // 创建一个新的中间件函数
    logMiddleware := func(next http.Handler) http.Handler {
        return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
            log.Println("Request received:", r.URL.Path)
            // 调用下一个处理程序
            next.ServeHTTP(w, r)
        })
    }

    // 创建一个新的 HTTP 处理程序
    mux := http.NewServeMux()
    mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprint(w, "Hello, World!")
    })

    // 将中间件应用到处理程序
    http.Handle("/", logMiddleware(mux))

    // 启动 HTTP 服务器
    log.Println("Listening on port 8080")
    http.ListenAndServe(":8080", nil)
}
Prinsip

net/http 中间件实现。

具体实现

以下是一个使用 net/http 编写拦截器的示例:

rrreee

原理

该拦截器使用 net/http.HandlerFunc 创建一个新的 HTTP 处理程序。此处理程序在请求到达原始处理程序之前和之后执行。在我们的示例中,logMiddlewarePemintas ini menggunakan net/unc.H / code> Buat pengendali HTTP baharu. Pengendali ini dilaksanakan sebelum dan selepas permintaan sampai kepada pengendali asal. Dalam contoh kami, <code>logMiddleware mencatatkan permintaan yang diterima sebelum pengendali menerima permintaan dan memanggil pengendali seterusnya.

Kes praktikal

Pemintas boleh digunakan dalam pelbagai senario, termasuk:

  • Pengesahan dan kebenaran
  • Caching
  • Ralat penyerahan log dan pemantauan
  • Custom

Kelebihan

  • tersedia Kelanjutan : Pemintas membolehkan anda menambah fungsi baharu dengan mudah pada aplikasi anda tanpa mengubah suai kod sedia ada.
  • Kebolehgunaan semula: Pemintas boleh digunakan semula merentasi berbilang titik akhir atau pengendali.
  • Kebolehujian: Pemintas ialah komponen modular yang mudah diuji dan diselenggara.

Atas ialah kandungan terperinci Menyahmistifikasi mekanisme pemintas di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn