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

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

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

首先从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请求客户端

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

}

  1. 在main.go调用请求方法

package main

// 注意,main方法必须在main包下,同一个包只能由一个名称。


import"kitchen-engine/server"


func main() {

// 调用server目录下的RequestHttp方法

server.RequestHttp()

}

  1. 运行程序,打印结果

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.comhttp://mirror-chat.baidu.comhttps://fj-chat.baidu.comhttps://hba-chat.baidu.comhttps://hbe-chat.baidu.comhttps://njjs-chat.baidu.comhttps://nj-chat.baidu.comhttps://hna-chat.baidu.comhttps://hnb-chat.baidu.comhttp://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的知识,今天先让大家了解以下咱们的方式和节奏。后续深入学习。

相关文章
|
14天前
|
缓存 前端开发 API
|
2天前
|
JSON API 数据格式
Python中获取HTTP请求响应体的详解
本文介绍了如何使用Python的`requests`和`urllib`库发送HTTP请求并处理响应体。`requests`库简化了HTTP请求过程,适合快速开发;`urllib`库则更为底层,适用于性能要求较高的场景。文章详细演示了发送GET请求、处理JSON响应等常见操作。
|
1天前
|
安全 API 网络安全
使用OkHttp进行HTTPS请求的Kotlin实现
使用OkHttp进行HTTPS请求的Kotlin实现
|
8天前
|
前端开发 JavaScript Java
如何捕获和处理HTTP GET请求的异常
如何捕获和处理HTTP GET请求的异常
|
10天前
|
开发者
HTTP 协议请求方法的发展历程
【10月更文挑战第21天】
|
10天前
|
安全
HTTP 协议的请求方法
【10月更文挑战第21天】
|
10天前
|
缓存 安全 前端开发
HTTP 协议的请求方法在实际应用中有哪些注意事项?
【10月更文挑战第29天】HTTP协议的请求方法在实际应用中需要根据具体的业务场景和需求,合理选择和使用,并注意各种方法的特点和限制,以确保网络通信的安全、高效和数据的一致性。
|
14天前
|
安全 API 数据安全/隐私保护
常见的HTTP请求方法
【10月更文挑战第25天】这些HTTP请求方法共同构成了客户端与服务器之间交互的基础,使得客户端能够根据不同的需求对服务器资源进行各种操作。在实际应用中,开发者需要根据具体的业务场景和资源的性质选择合适的请求方法来实现客户端与服务器之间的有效通信。
|
4天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
29 3
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
56 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)