有时候在使用一些不熟悉的httpclient时,特别的需要知道究竟有没有拼错请求参数或者请求方法是否设置错误(GET、POST、HEAD、PUT),这时能够知道原始请求数据就很重要了,但是请求到http服务器无论是PHP、Java还是.Net都是没办法查看原始请求数据的,使用tcpdump等工具又过于复杂,下面小编使用golang实现一个简单的tcpserver来达到这个目的,当然这个小工具和chrome的开发者工具比起来还差很远。
工具/原料
1
golang
2
curl命令
方法/步骤
1
使用golang的net包很容易就可以实现我们的功能;侦听端口:var listener, err = net.Listen('tcp', ':8090') //任意本机ip, 这里是8090端口,可以改成其他你需要的端口
2
接收请求:var conn, err = listener.Accept() //收到一个请求或出错才会返回注意,要在一个无限循环里处理请求,不然接收到一个请求程序就退出了。
3
处理请求:go func(c net.Conn) {//处理逻辑}(conn)为了可以并发,起一个routine去处理请求,在我们的需求里不需要支持并发的,但golang里只要加一个go关键词就变成并发了,没实现成本,何乐而不为呢?注意,通过参数将连接变量传入闭包,而不是直接在闭包里捕捉conn变量,这是一个好习惯,大家可以思考下为什么。
4
使用curl测试,在调试RESTFul api时,curl命令应该是最便捷的工具了,下面我们来看看curl的原始请求:curl -XGET localhost:8090/_cluster/health?pretty=true其中-XGET指定http method为GET,类似的POST为-XPOST、PUT为-XPUT等。
5
curl这次请求的原始数据就可以看得一清二楚了。
注意事项
1
系统需要正确安装golang环境
2
这只是一个方便测试、开发的小工具
上一篇:哪些企业需要服务器租用?
下一篇:如何玩转华为云的服务器活动?