larksuite/oapi-sdk-go

EventHandle无法获取http request中传入的context

xuzq3 opened this issue · 0 comments

xuzq3 commented

EventHandle无法获取http request中传入的context:

文件 core/httpserverext/httpserverext.go 中

func doProcess(writer http.ResponseWriter, req *http.Request, reqHandler larkevent.IReqHandler) {
	// 转换http请求对象为标准请求对象
	ctx := context.Background()
	eventReq, err := translate(ctx, req)
	if err != nil {
		writer.WriteHeader(http.StatusInternalServerError)
		writer.Write([]byte(err.Error()))
		return
	}

	// 处理请求
	eventResp := reqHandler.Handle(ctx, eventReq)

	// 回写结果
	err = write(ctx, writer, eventResp)
	if err != nil {
		reqHandler.Logger().Error(ctx, fmt.Sprintf("write resp result error:%s", err.Error()))
	}
}

由于 ctx := context.Background(),无法获取 http 中间件中对ctx写入的参数,建议改成 ctx := req.Context()。