【测试平台系列】第一章手撸压力机 (一)简单的http请求实现

2023-11-17 11:03:43 浏览数 (1)

测试平台,我们首先从手撸压力机开始。压力机也就是所谓的客户端,我们发送的请求是从这里开始对服务端的接口进行访问。

首先从HTTP请求开始,我们采用Go语言进行开发,http(https)请求客户端我们使用fasthttp,官网地址:https://pkg.go.dev/github.com/valyala/fasthttp# 有兴趣的大家可以看看。

1. 使用goland(ide)新建kitchen-engine项目(go 1.18.3)

2. 在项目中新建main.go文件

3. 新建server目录

4. 在server目录新建http_client.go文件

http_client.go 构建简单的http请求客户端

代码语言:javascript复制
package server

import (
  "crypto/tls"
  "fmt"
  "github.com/valyala/fasthttp"
)

func RequestHttp() {
 
    // 使用fasthttp 协程池

    // 新建一个http请求
  req := fasthttp.AcquireRequest()
  defer fasthttp.ReleaseRequest(req)
    // 新建一个http响应接受服务端的返回
  resp := fasthttp.AcquireResponse()
  defer fasthttp.ReleaseResponse(resp)

    // 新建一个http的客户端
  client := newHttpClient()

   // 添加该请求的http方法:get、post、delete、update等等
  req.Header.SetMethod("GET")

   // 添加该请求的http的url
  req.SetRequestURI("http://www.baidu.com")

    // 开始请求
  err := client.Do(req, resp)
  if err != nil {
    fmt.Sprintln("发送http请求错误:", err.Error())
  }

  fmt.Println("resp:    ", resp.String())

}

func newHttpClient() (httpClient *fasthttp.Client) {
    // tls验证,关闭验证
  tr := &tls.Config{
    InsecureSkipVerify: true,
  }


    // 新建指针类型的客户端
  httpClient = &fasthttp.Client{}
  httpClient.TLSConfig = tr
  return
}

使用fasthttp,需要在项目中获得第三方包

代码语言:javascript复制
go get github.com/valyala/fasthttp

5. 在main.go中调用函数

代码语言:javascript复制
package main 
// 注意,main方法必须在main包下,同一个包只能由一个名称。

import "kitchen-engine/server"

func main() {
    // 调用server目录下的RequestHttp方法
  server.RequestHttp()
}

6. 打印结果:

代码语言:javascript复制
resp:     HTTP/1.1 200 OK
Server: BWS/1.1
Date: Tue, 06 Jun 2023 08:47:55 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 385396
Bdpagetype: 1
Bdqid: 0xe84c2188000230d1
Connection: keep-alive
Content-Security-Policy: frame-ancestors 'self' https://chat.baidu.com http://mirror-chat.baidu.com https://fj-chat.baidu.com https://hba-chat.baidu.com https://hbe-chat.baidu.com https://njjs-chat.baidu.com https://nj-chat.baidu.com https://hna-chat.baidu.com https://hnb-chat.baidu.com http://debug.baidu-int.com;
P3p: CP=" OTI DSP COR IVA OUR IND COM "
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Traceid: 1686041274356516890616738790783028703441
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1
Set-Cookie: BAIDUID=6858ED69C7325FA94179EB79A1A57209:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=6858ED69C7325FA94179EB79A1A57209; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1686041274; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BAIDUID=6858ED69C7325FA92806F56F5DF35119:FG=1; max-age=31536000; expires=Wed, 05-Jun-24 08:47:54 GMT; domain=.baidu.com; path=/; version=1; comment=bd
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=38515_36545_38687_38768_38843_38485_38814_38823_38838_38640_26350_38567_38669; path=/; domain=.baidu.com
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta content="always" name="referrer"><meta name="theme-color" content="#ffffff"><meta name="description" content="全球领先的中文搜索引擎、致力于让网民更便捷地获取信息,找到所求。百度超过千亿的中文

先从这里开始讲起把,其中会涉及到很多go和http的知识,今天先让大家了解以下咱们的方式和节奏。

0 人点赞