[英]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.