Pemintas Golang: sepintas lalu

WBOY
Lepaskan: 2024-04-07 21:24:02
asal
965 orang telah melayarinya

Ikhtisar: Go interceptor ialah mekanisme yang mengendalikan logik pra dan pasca fungsi yang dilaksanakan melalui perisian perantara. Prinsip: Pemintas dihantar ke fungsi sebagai parameter, dan logik sebelum dan selepas fungsi itu dilaksanakan. Pertempuran Praktikal: Menunjukkan penggunaan pemintas dengan mencipta pemintas yang merekodkan masa permintaan dan mengesahkan parameter permintaan, dan memautkannya kepada pengendali HTTP.

Golang 拦截器: 一览无余

Go Interceptor: Sekilas Pandang

Pengenalan

Pemintas ialah mekanisme yang melakukan beberapa pemprosesan sebelum dan selepas sesuatu fungsi dilaksanakan. Di Golang, pemintas boleh dilaksanakan menggunakan perisian tengah.

Prinsip

Pemintas berfungsi dengan melepasi diri mereka sendiri sebagai parameter kepada fungsi yang akan dipintas. Apabila fungsi dipanggil, pemintas akan melaksanakan logiknya sebelum dan selepas fungsi itu dilaksanakan.

Kes praktikal

Kami mencipta pelayan HTTP mudah untuk menunjukkan cara menggunakan pemintas:

package main

import (
    "log"
    "net/http"
)

func main() {
    // 创建一个记录请求时间的拦截器
    timeInterceptor := func(next http.Handler) http.Handler {
        return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
            start := time.Now()
            defer func() { log.Printf("请求处理耗时:%fs", time.Since(start).Seconds()) }()
            next.ServeHTTP(w, r)
        })
    }

    // 创建一个校验请求参数的拦截器
    paramInterceptor := func(next http.Handler) http.Handler {
        return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
            if r.URL.Query().Get("id") == "" {
                http.Error(w, "缺少参数:id", http.StatusBadRequest)
                return
            }
            next.ServeHTTP(w, r)
        })
    }

    // 将拦截器与 HTTP 处理程序链接
    handler := paramInterceptor(timeInterceptor(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hello, World!"))
    })))

    // 启动服务器
    log.Fatal(http.ListenAndServe(":8080", handler))
}
Salin selepas log masuk

Dalam contoh ini, timeInterceptor 拦截器记录请求处理时间,而 paramInterceptor pemintas mengesahkan parameter permintaan. Dengan merantai pemintas, kami boleh melaksanakan logik ini sebelum dan selepas memproses permintaan.

Ringkasan

Pemintas ialah alat berkuasa untuk meningkatkan fungsi program Golang. Ia membenarkan anda melaksanakan kod tersuai sebelum dan selepas fungsi dijalankan, membolehkan operasi seperti pengelogan, pengesahan dan kebenaran.

Atas ialah kandungan terperinci Pemintas Golang: sepintas lalu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!