golang中的httptest
实例
import ("fmt""net/http""strings"
)func myHandler(w http.ResponseWriter, r *http.Request) {//解析参数,默认是不会解析的r.ParseForm()fmt.Fprintf(w, "%v\n", r.Form)fmt.Fprintf(w, "path:%s\n", r.URL.Path)fmt.Fprintf(w, "schema:%s\n", r.URL.Scheme)//get查询字符串fmt.Fprintf(w, "form:%s\n", r.Form)//控制台打印for k, v := range r.Form {fmt.Println("key: ", k)fmt.Println("value: ", strings.Join(v, ""))}fmt.Fprintf(w, "hello world\n")
}func main() {//第一个参数是url的http.HandleFunc("/health", myHandler)//用于指定的tcp网络地址监听//第一个参数是监听地址,第二个参数是服务端处理程序,通常为空,为空表示服务端调用http.DefaultServeMux处理err := http.ListenAndServe("127.0.0.1:8183", nil)if err != nil {fmt.Println("有错误: ", err)}
}
httptest
import ("fmt""net/http""net/http/httptest""testing"
)func TestMyHandler(t *testing.T) {//创建一个请求req, err := http.NewRequest("GET", "/health", nil)if err != nil {t.Fatal(err)}// 我们创建一个 ResponseRecorder (which satisfies http.ResponseWriter)来记录响应rr := httptest.NewRecorder()//直接使用myHandler,传入参数rr,reqmyHandler(rr, req)// 检测返回的状态码if status := rr.Code; status != http.StatusOK {t.Errorf("返回的状态码是: %v",status)}// 检测返回的数据fmt.Println(rr.Body.String())
}
golang中的httptest相关推荐
- Golang中Buffer高效拼接字符串以及自定义线程安全Buffer
本文原创文章,转载注明出处,博客地址 https://segmentfault.com/u/to... 第一时间看后续精彩文章.觉得好的话,顺手分享到朋友圈吧,感谢支持. Go中可以使用"+ ...
- 如何在golang中关闭bufio.reader_Golang 并发模型系列:1. 轻松入门流水线模型
Go语言中文网,致力于每日分享编码.开源等知识,欢迎关注我,会有意想不到的收获! Golang作为一个实用主义的编程语言,非常注重性能,在语言特性上天然支持并发,它有多种并发模型,通过流水线模型系列文 ...
- go语言的iota是什么意思_关于Golang中的iota
快速一览 iota是Golang中提供的一个简化常量和枚举编程的标识符,合理的使用这个标识符可以让代码变得更简洁,省去大量的不必要的代码. 比如下面的这个常量定义 const ( a = 1 b = ...
- Golang中的panic和recover(捕获异常)
Golang中的panic和recover(捕获异常) 参考文章: (1)Golang中的panic和recover(捕获异常) (2)https://www.cnblogs.com/zhzhlong ...
- golang 中string和int类型相互转换
总结了golang中字符串和各种int类型之间的相互转换方式: string转成int: test_int, err := strconv.Atoi(test_string) if err != ni ...
- golang中并发sync和channel
golang中并发sync和channel chenbaoke · 2014-12-08 13:00:01 · 19151 次点击 · 预计阅读时间 5 分钟 · 不到1分钟之前 开始浏览 这是一个创 ...
- golang中的sync.WaitGroup
golang中的sync.WaitGroup Posted on 2015/04/09刚才看golang的sync的包,看见一个很有用的功能.就是WaitGroup. 先说说WaitGroup的用途: ...
- 初步解读Golang中的接口相关编写方法
初步解读Golang中的接口相关编写方法 概述如果说goroutine和channel是Go并发的两大基石,那么接口是Go语言编程中数据类型的关键.在Go语言的实际编程中,几乎所有的数据结构都围绕接口 ...
- golang中utf8和汉字互转
golang中utf8和汉字互转 package mainimport ("fmt""strconv""strings" )func mai ...
最新文章
- C++Merege Sort合并排序的实现算法(附完整源码)
- visual studio 安装Entity framework失败
- LeetCode MySQL 1097. 游戏玩法分析 V
- Dubbo基本原理机制
- 关于MongoDB时区问题
- linux apache 2.2下载,Apache HTTP Server 2.2.26 发布下载
- 很漂亮动态个人主页自带音乐源码
- 智能水杯设计方案_多功能智能水杯设计方案
- Windows最强ssh客户端推荐 —— Bitvise SSH Client(一)
- cookie secure
- 电脑热点和虚拟机网卡冲突
- python安装以及插件安装
- bad interpreter: No such file or directory解决办法
- 【信号与系统】(二)信号与系统概述——基本信号
- SmartScreen 筛选器带来的麻烦
- Python写个小游戏:速算24点(上)
- 尹春鹏-Cocos游戏的自动化测试和崩溃分析
- Maya灯光【电影级灯光渲染-基础光】
- App 抓包问题与解决
- Vector的sort的使用
热门文章
- 【Android 安全】DEX 加密 ( 不同 Android 版本的 DEX 加载 | Android 8.0 版本 DEX 加载分析 | Android 5.0 版本 DEX 加载分析 )
- 【嵌入式开发】 ARM 关闭 MMU ( 存储体系 | I/D-Cache | MMU | CP15 寄存器 | C1 控制寄存器 | C7 寄存器 | 关闭 MMU )
- 【Android 应用开发】 Application 使用分析
- vue3.0以上关于打包后出现空白页和路由不起作用
- align 的用法(u-boot源代码分析)
- 可扩展Web架构与分布式系统
- JavaScript(循环)
- java文本输入输出小结
- PowerDesigner 小工具窗
- 汇编实验4.1文件代号下的文件管理中为什么buf_size为80而buf可以容纳200个字节,矛盾吗?(不矛盾)