前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【测试平台系列】第一章手撸压力机 (一)简单的http请求实现

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

作者头像
被测试耽误的大厨
发布2023-11-17 11:03:43
1880
发布2023-11-17 11:03:43
举报
文章被收录于专栏:测试平台系列

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

首先从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的知识,今天先让大家了解以下咱们的方式和节奏。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈测试开发之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档