簡體   English   中英

如何修改golang請求對象?

[英]How to modify golang request object?

所以我一直在嘗試使用中間件修改 golang 中的請求結構,我嘗試創建一個自定義結構並嵌入請求對象和一些更多數據,但我無法將其輸入到 *http.Request 中,任何人都可以幫忙,提前致謝。

編輯:所以這是我的結構的樣子

type CustomRequest struct {
    *http.Request
    *profile.User // This is the data i want to embed into the request
}

// then my middlware will be something like

func Middleware(next http.HandlerFunc) http.HandlerFunc {
    return http.HandleFunc(func (w http.ResponseWriter, r *http.Request)) {
        user := &User{
        // User Details Are Here
        }

        customRequest := &CustomRequest{
            r,
            &user,
        }

        req := customRequest.(*http.Request)

        next.ServeHttp(w, req)
}

這不是type assertion工作方式。

對於接口類型的表達式 x 和類型 T,主要表達式

x.(T) 斷言 x 不是 nil 並且存儲在 x 中的值是 T 類型。符號 x.(T) 稱為類型斷言。

您將斷言接口鍵入其基礎類型。

您不能將一種類型斷言為另一種類型,即type conversion ,但在這種情況下,您無法在兩者之間進行轉換。 根據上述規范中的描述,您只能轉換兩種可轉換的類型。

如果你想修改*http.Request直接做,字段被導出。 如果您希望請求包含額外的數據,只需將其作為 JSON 或 url 寫入請求正文中。

編輯:為了傳遞數據,你也可以使用 context ,但我不確定你在做什么。 還有github.com/gorilla/context

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM