在 go-optical 文件中他們說:
as a rule of thumb, you must only use context values within the handler, and you must not keep any references
如果我像這樣將上下文當作函數參數傳遞,可以嗎:
func getlist(c *fiber.ctx) error { result, err := user.search(c) } func search(c *fiber.ctx) (user, err) { id := c.params("id") }
這被認為是一種不好的做法嗎?
我不太明白這句話:
as soon as you return from the handler, any values you have obtained from the context will be re-used in future requests and will change below your feet.
那麼,如果我已將回應傳送給客戶端,那麼 params 的值將被重複使用嗎?被誰重用?由我還是根據其他人的要求?
func getlist(c *fiber.ctx) error { id := c.params("id") // 911 return c.sendstring("hello, world!") }
如果 id 的值為 911,是否表示其他人的請求也會得到 911?
這是什麼意思
will change below your feet
誰能詳細說明一下,讓像我這樣的初學者更容易理解?謝謝...
#框架呼叫您的處理程序後可以重複使用實際的上下文對象,因此您在從處理程序返回後不能依賴其狀態。
如果我像這樣將上下文當作函數參數可以嗎?
這很好,只要 Search
不將上下文儲存在其他地方即可。如果它只是使用上下文中的值來進行搜索,然後返回結果,那就沒問題。
那麼,如果我已將回應傳送給客戶端,那麼 params 的值將被重複使用嗎?被誰重用?由我還是根據其他人的要求?
框架將重複使用實際的上下文對象,同時處理稍後的請求。
「腳下會改變」是什麼意思?
如果您不遵循上述建議,而是在從處理程序返回後保留對上下文的引用,則該上下文中的值將意外更改,因為框架正在將該上下文用於新請求。
以上是僅在處理程序內有效的變數是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!