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

Bagaimana untuk menghantar parameter dari middleware kepada pengawal

王林
王林ke hadapan
2024-02-13 17:15:10490semak imbas

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

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

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:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam