You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go端点处理器仅初始化执行,重复请求返回相同内容问题

问题分析与修复方案

核心问题

你在注册路由时直接调用了employeeSearchHandler(),导致这个函数在服务启动阶段就执行完毕,生成了固定的随机数和对应的Handler实例。后续所有请求都复用这个提前创建好的Handler,自然返回内容不会变化。

修复步骤

  1. 修改处理器函数,使其符合http.HandlerFunc签名
    将employeeSearchHandler改成每次请求触发时才执行逻辑的函数:

    func employeeSearchHandler(w http.ResponseWriter, r *http.Request) {
        employee := rand.IntN(1000)
        fmt.Println(employee)
        // 每次请求都生成新的模板Handler并处理响应
        templ.Handler(employee_search.EmployeeResult(employee)).ServeHTTP(w, r)
    }
    
  2. 更新路由注册方式
    不再提前执行处理器函数,而是直接传递函数本身:

    router.Get("/employee_search", employeeSearchHandler)
    

额外优化(可选)

如果需要更随机的数值,建议在main函数初始化随机数种子,避免每次启动服务生成的随机序列相同:

import "math/rand"
import "time"

func main() {
    rand.Seed(time.Now().UnixNano())
    router := chi.NewRouter()
    // ... 其他路由注册代码
    http.ListenAndServe(":3000", router)
}

内容的提问来源于stack exchange,提问作者Sebi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 12:02:45