为了账号安全,请及时绑定邮箱和手机立即绑定

如何在golang中传递http请求?

如何在golang中传递http请求?

Go
拉丁的传说 2021-12-20 10:15:51
我在 golang 中有一个 Request 对象,我想通过 net.Conn 作为代理任务的一部分提供这个对象的内容。我想打电话给类似的东西req, err := http.ReadRequest(bufio.NewReader(conn_to_client))conn_to_remote_server.Write(... ? ... )但我不知道我会传入什么作为参数。任何意见,将不胜感激。
查看完整描述

1 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

查看 Negroni 中间件。它让您通过不同的中间件和自定义 HandlerFuncs 传递您的 HTTP 请求。像这样的东西:


   n := negroni.New(

        negroni.NewRecovery(),

        negroni.HandlerFunc(myMiddleware),

        negroni.NewLogger(),

        negroni.NewStatic(http.Dir("public")),

    )


...

...


func myMiddleware(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc) {

    log.Println("Logging on the way there...")


    if r.URL.Query().Get("password") == "secret123" {

        next(rw, r)      //**<--------passing the request to next middleware/func**

    } else {

        http.Error(rw, "Not Authorized", 401)

    }


    log.Println("Logging on the way back...")

}

注意如何next(rw,r)用于传递 HTTP 请求


如果您不想使用 Negroni,您可以随时查看它的实现,了解它如何将 HTTP 请求传递给另一个中间件。


它使用自定义处理程序,看起来像:


handlerFunc func(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc)

参考:https : //gobridge.gitbooks.io/building-web-apps-with-go/content/en/middleware/index.html


查看完整回答
反对 回复 2021-12-20
  • 1 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信