HTTP

Example

项目地址HTTP - 图1 (opens new window)

HTTP配置

  1. type Config struct {
  2. Addr string // 连接地址
  3. Debug bool // 是否开启调试,默认不开启,开启后并加上export EGO_DEBUG=true,可以看到每次请求,配置名、地址、耗时、请求数据、响应数据
  4. RawDebug bool // 是否开启原生调试,默认不开启
  5. ReadTimeout time.Duration // 读超时,默认2s
  6. SlowLogThreshold time.Duration // 慢日志记录的阈值,默认500ms
  7. EnableAccessInterceptor bool // 是否开启记录请求数据,默认不开启
  8. EnableAccessInterceptorReply bool // 是否开启记录响应参数,默认不开启
  9. }

用户配置

  1. [http.test]
  2. addr = "http://127.0.0.1:9007" # 开启后并加上export EGO_DEBUG=true,可以看到每次http请求,配置名、地址、耗时、请求数据、响应数据
  3. debug = true

优雅的Debug

通过开启debug配置和命令行的export EGO_DEBUG=true,我们就可以在测试环境里看到请求里的配置名、地址、耗时、请求数据、响应数据 image 当然你也可以开启http原生的调试,将rawDebug设置为true

用户代码

配置创建一个 http 的配置项,其中内容按照上文HTTP的配置进行填写。以上这个示例里这个配置key是http.test

代码中创建一个 HTTP 客户端, ehttp.Load("key").Build(),代码中的 key 和配置中的 key 要保持一致。创建完 HTTP 客户端后, 将他添加到你所需要的Client里即可。

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/gotomicro/ego"
  5. "github.com/gotomicro/ego/client/ehttp"
  6. "github.com/gotomicro/ego/core/elog"
  7. )
  8. func main() {
  9. if err := ego.New().Invoker(
  10. invokerHTTP,
  11. callHTTP,
  12. ).Run(); err != nil {
  13. elog.Error("startup", elog.FieldErr(err))
  14. }
  15. }
  16. var httpComp *ehttp.Component
  17. func invokerHTTP() error {
  18. httpComp = ehttp.Load("http.test").Build()
  19. return nil
  20. }
  21. func callHTTP() error {
  22. info, err := httpComp.R().Get("/hello")
  23. if err != nil {
  24. return err
  25. }
  26. fmt.Println(info)
  27. return nil
  28. }