草庐IT

test_http

全部标签

http - Go Web 服务器的进程管理

我是一名新的Go程序员,来自Web应用程序和服务开发领域。抱歉,这是一个Herpde-derp问题,但我在谷歌上搜索答案并没有找到任何东西。此外,这是边缘服务器故障领域,但由于我对API/编程接口(interface)更感兴趣,所以我在这里问。我已经使用net/http编写了一个小的go程序包的内置Web服务器。我正准备部署到生产环境,但我对Go模型的网络服务器的过程以及我应该如何部署有点不清楚。具体来说——在我习惯的环境(PHP、Ruby、Python)中,我们有一个Web服务器(Apache、Nginx等)位于我们的应用程序前面,我们将这些Web服务器配置为使用一定数量的工作进程/

http - 自签名代理客户端

我需要创建一个返回自签名代理http.Client的函数,但我找不到任何可行的解决方案。我附上了我当前似乎无法正常工作的代码。funcCreateProxyClient(serverstring,serverProxystring,sidstring,portProxyint)(*Client,error){http.DefaultTransport.(*http.Transport).TLSClientConfig=&tls.Config{InsecureSkipVerify:true}proxyURL,_:=url.Parse("http://"+serverProxy+":"+s

unit-testing - 单元测试调用另一个方法的方法

对调用多个方法的方法进行单元测试的最佳方法是什么,例如:modify(stringvalue){if(value.Length>5)replaceit(value);elsechangeit(value);}此伪代码有一个修改方法,(当前)调用replaceit()或changeit()。我已经为replaceit和changeit编写了测试,因此为modify编写新测试将是99%的同一组代码。我需要测试它的想法,因为它可能会在未来发生变化。那么我是否复制粘贴现有的测试代码?将测试代码移动到一个通用函数?还有其他想法吗?我不确定此处的最佳做法。 最佳答案

http - 为什么 "http.Get()"方法在 go 中抛出致命异常?

我正在尝试使用以下方法:response,err:=http.Get("https://support.microsoft.com")它按预期工作。但是当我用"https://samsung.com"调用它时,它抛出了我无法处理的致命异常。代码示例:packagemainimport("fmt""net/http")funcmain(){_,err:=http.Get("http://support.microsoft.com")iferr!=nil{fmt.Println(err)}}这里是错误:panic:cipher.NewCBCEncrypter:IVlengthmustequ

go - 实现 tus-file-uploader 时 http.handle 和 gorilla.mux 的区别

我正在尝试根据其网站上提供的示例实现一个tus文件uploader(tus.io)。一切正常,直到我从http.Handle("/files/",http.StripPrefix("/files/",handler))到r.Handle("/files/",http.StripPrefix("/files/",handler))像这样声明r:r:=mux.NewRouter()当尝试调用PATCH-Request上传文件时,使用gorilla路由器使tus-server回复404。问题:http-Handle与上例中给出的r.Handle有哪些不同?也许它不服务PATCH-Reques

unit-testing - 使用 github.com/jarcoal/httpmock 验证请求主体

我正在尝试测试的函数接受数据结构,形成一个query_dsl,然后使用形成的查询对Elasticsearch进行/_search调用。因此,我想对形成的query_dsl和url进行断言。我正在使用github.com/jarcoal/httpmock在我的单元测试中模拟net/http请求。根据文档,它公开了funcGetCallCountInfo()map[string]int以验证特定端点被命中的次数。但我也有兴趣知道进行此调用时请求正文是什么。http.Client未公开,因此无法覆盖/模拟它进行测试。如果无法使用此包,那么是否有任何其他库可以模拟网络请求并提供请求主体?

testing - 如何按顺序运行 golang 测试?

当我运行gotest时,我的输出:---FAIL:TestGETSearchSuccess(0.00s)Location:drivers_api_test.go:283Error:Notequal:200(expected)!=204(actual)---FAIL:TestGETCOSearchSuccess(0.00s)Location:drivers_api_test.go:391Error:Notequal:200(expected)!=204(actual)但是在我再次运行gotest之后,我的所有测试都通过了。仅当我重置我的mysql数据库,然后第一次运行gotest时,测试

go - 分布式出站 http 速率限制器

我有一个微服务架构应用程序,其中有多个服务轮询外部API。外部API的速率限制为每分钟600个请求。我如何才能让我的所有实例一起保持低于共享的600速率限制?Google只给我提供了3个解决方案,最有希望的是:myntra/golimit三者中最有前途的,但我确实不知道如何设置它。wallstreetcn/rate这似乎只在达到限制时拒绝(我的应用程序需要等到它可以发出请求)并且rate.NewLimiter函数中的Every函数似乎是一个不同的导入/依赖项,我无法弄清楚它是什么manavo/go-rate-limiter有一个“软”限制,显然可以让我超过限制。有些端点如果我不能访问它

http - 我认为我的文件上传连接正在关闭...为什么?

免责声明:我不确定标题是否是我的实际问题,但这是对以下内容有意义的唯一原因。场景我正在将大型视频上传到我的Golang服务器。我有一个8GB的​​文件,在本地大约需要15分钟,并且运行良好。但是,在我的暂存服务器(GoogleCloud)上,上传此文件需要一个多小时,这就是问题所在。问题我的客户端正在等待文件完成上传以便调用另一个API端点,但只有在登台服务器上才会失败。所以看起来当我的服务器正在寻找写入响应时,连接将不允许它,因为客户端显示502错误和CORS错误,我知道这是Chrome的说法“我们不知道,请检查您的服务器”。代码在我的SrcHandler中是这样的:deferfun

http - 如何使用 NewSingleHostReverseProxy 处理错误

我正在尝试做一个负载均衡器来研究一些go包。我想在请求超时或出现404错误时处理错误,但找不到如何处理。funcmain(){//startserverhttp.HandleFunc("/",handleRequestAndRedirect)iferr:=http.ListenAndServe(getListenAddress(),nil);err!=nil{panic(err)}}funchandleRequestAndRedirect(reshttp.ResponseWriter,req*http.Request){ur,_:=url.Parse("https://www.inst