测试平台,我们首先从手撸压力机开始。压力机也就是所谓的客户端,我们发送的请求是从这里开始对服务端的接口进行访问。
首先从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的知识,今天先让大家了解以下咱们的方式和节奏。