Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk menghantar parameter dari middleware kepada pengawal

Bagaimana untuk menghantar parameter dari middleware kepada pengawal

王林
Lepaskan: 2024-02-13 17:15:10
ke hadapan
534 orang telah melayarinya

Bagaimana untuk menghantar parameter dari middleware kepada pengawal

editor php Baicao memperkenalkan anda cara menghantar parameter daripada perisian tengah kepada pengawal. Semasa proses pembangunan, kita selalunya perlu mendapatkan beberapa parameter dalam perisian tengah dan kemudian menyerahkan parameter ini kepada pengawal untuk pemprosesan seterusnya. Untuk mencapai fungsi ini, kita boleh menghantar parameter kepada pengawal dengan menggunakan kaedah dengan objek $request dalam middleware. Mula-mula, kita perlu mendapatkan parameter dalam middleware, kemudian gunakan kaedah dengan objek $request untuk menambah parameter pada objek permintaan, dan akhirnya dapatkan parameter ini dalam pengawal melalui kaedah input objek $request. Dengan cara ini, kami berjaya menghantar parameter daripada perisian tengah kepada pengawal. Kaedah ini mudah dan mudah untuk dilaksanakan serta memenuhi keperluan kita. Semoga kaedah ini membantu anda!

Kandungan soalan

Saya sedang membina API Web menggunakan rangka kerja Echo Labstack. Saya mempunyai perisian tengah dalam laluan saya untuk menyemak pengesahan pengguna, tetapi kemudian saya menghadapi masalah menghantar data kepada pengawal dan tidak dapat mencari sebarang maklumat yang berkaitan dalam Google dan SO.

route.go

func Routes(e *echo.Echo) {
    e.(middlewareAuthorise)
    user := e.Group("/user")
    user.GET("/profile", controllers.UserProfile)
}

func middlewareAuthorise(next echo.HandlerFunc) echo.HandlerFunc {
    return func(c echo.Context) error {
        // Do some authentication here with access token and get user ID
        auth := controllers.Auth(c, 1)
        if auth["status"] != 200 {
            return c.JSON(401, map[string]any{"status": 401})
        }

        user_id := auth["user_id"]
        // I want to pass user_id to my controllers
        return next(c, user_id)
    }
}
Salin selepas log masuk

controllers.go

func UserProfile(c echo.Context) error {
    // I want to get the user_id here from middleware
    return c.JSON(200, map[string]any{
        "user_id": user_id,
    })
}
Salin selepas log masuk

Saya telah mencari dan mencuba berbilang kombinasi sepanjang hari tetapi tidak menemui apa-apa yang berkesan. Bagaimanakah saya boleh menghantar parameter daripada perisian tengah kepada pengawal saya dengan cara yang paling cekap?

Penyelesaian

Anda boleh menggunakan kaedah SetGet konteks.

Atas ialah kandungan terperinci Bagaimana untuk menghantar parameter dari middleware kepada pengawal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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