github.com/isyscore/isc-gobase@v1.5.3-0.20231218061332-cbc7451899e9/http/README.md (about)

     1  ## http
     2  http包是简化封装解析,在公司这边有标准的返回结构,但是我们很多时候只使用其中的data部分,很多时候自己需要判断并解析,这里对这个做了简单的工具封装
     3  ```json
     4  {
     5    "code": 0,
     6    "message": "yy",
     7    "data": "xx"
     8  }
     9  ```
    10  
    11  ### 示例
    12  ```go
    13  func TestGetSimple(t *testing.T) {
    14      // {"code":"success","data":"ok","message":"成功"}
    15      data, err := http.GetSimple("http://localhost:8082/api/api/app/sample/test/get")
    16      if err != nil {
    17          fmt.Errorf(err.Error())
    18          return
    19      }
    20      fmt.Println(string(data))
    21  
    22      // "ok"
    23      data, err = http.GetSimpleOfStandard("http://localhost:8082/api/api/app/sample/test/get")
    24      if err != nil {
    25          fmt.Errorf(err.Error())
    26          return
    27      }
    28      fmt.Println(string(data))
    29  }
    30  ```
    31  
    32  ### 配置
    33  ```yaml
    34  # http的配置
    35  base:
    36    http:
    37      # 通用的超时配置,链接、重定向、响应的所有超时时间;默认0,就是不超时
    38      timeout: 5s
    39      transport:
    40        # 握手的最长时间
    41        tls-handshake-timeout: 10s
    42        # 禁用HTTP keep alives,且将仅对单个HTTP请求使用到服务器的连接。 这与类似命名的TCP keep-alives无关
    43        disable-keep-alives: true
    44        # 禁用gzip的压缩标示
    45        disable-compression: true
    46        # 最大空闲连接数
    47        max-idle-conns: 100
    48        # 每个主机最大空闲连接数
    49        max-idle-conns-per-host: 100
    50        # 每个主机最大连接数
    51        max-conns-per-host: 100
    52        # 连接在关闭之前保持空闲的最长时间
    53        idle-conn-timeout: 90s
    54        # 完全写入请求后等待服务器响应标头的时间
    55        response-header-timeout: 15s
    56        # 在请求具有“Expect:100 continue”标头时,在完全写入请求标头后等待服务器的第一个响应标头的时间
    57        expect-continue-timeout: 1s
    58        # 指定服务器响应标头中允许的响应字节数限制
    59        max-response-header-bytes: 1024
    60        # 写入缓冲区的大小;如果为零,则使用默认值(当前为4KB)
    61        write-buffer-size: 4096
    62        # 从传输读取时使用的读取缓冲区的大小。如果为零,则使用默认值(当前为4KB)
    63        read-buffer-size: 4096
    64        # 使用Dial、DialTLS或DialContext func或TLSClientConfig字段时候,默认关闭http2;如果想要开启,则请设置为true
    65        force-attempt-HTTP2: true
    66        # 用于创建未加密TCP连接
    67        dial-context:
    68          # 超时是拨号等待连接完成的最长时间。如果同时设置了Deadline,则可能会更早失败。 默认值为无超时。
    69          timeout: 30s
    70          # 超时的绝对时间
    71          # deadline: "2023-02-13"
    72          # 活动网络连接的保持活动探测之间的间隔;默认15s
    73          keep-alive: 30s
    74  ```
    75  如下是http的默认配置 Transport `DefaultTransport`
    76  ```yaml
    77  base:
    78    http:
    79      transport:
    80        # 使用Dial、DialTLS或DialContext func或TLSClientConfig字段时候,默认关闭http2;如果想要开启,则请设置为true
    81        force-attempt-HTTP2: true
    82        # 最大空闲连接数
    83        max-idle-conns: 100
    84        # 连接在关闭之前保持空闲的最长时间
    85        idle-conn-timeout: 90s
    86        # 握手的最长时间
    87        tls-handshake-timeout: 10s
    88        # 在请求具有“Expect:100 continue”标头时,在完全写入请求标头后等待服务器的第一个响应标头的时间
    89        expect-continue-timeout: 1s
    90        # 用于创建未加密TCP连接
    91        dial-context:
    92          # 超时是拨号等待连接完成的最长时间。如果同时设置了Deadline,则可能会更早失败。 默认值为无超时。
    93          timeout: 30s
    94          # 活动网络连接的保持活动探测之间的间隔;默认15s
    95          keep-alive: 30s
    96  ```