hls689
代码他传到github上了,地址: https://github.com/e421083458/gin_scaffold
慕工程7758632
http库只是基本的架子,还缺少很多问题。Gin进一步封装,让我们能更快使用——比如,http中的http.Request
.Body只会读一次,第二次是读不到的,然后你使用的话需要自己保存;但是用Gin后,它会帮你做好保存让你直接使用,这样更加符合开发的逻辑。总之,Gin就是弥补了原生http库的不足,并且这些补充都是适用了的最佳实践方式。
```go
func readBodyOnce(w http.ResponseWriter, r *http.Request) {
body, err := io.ReadAll(r.Body)
if err != nil {
fmt.Fprintf(w, "read body failed: %v", err)
// 记住要返回,不然就还会执行后面的代码
return
}
// 类型转换,将 []byte 转换为 string
fmt.Fprintf(w, "read the data: %s \n", string(body))
// 尝试再次读取,啥也读不到,但是也不会报错
body, err = io.ReadAll(r.Body)
if err != nil {
// 不会进来这里
fmt.Fprintf(w, "read the data one more time got error: %v", err)
return
}
fmt.Fprintf(w, "read the data one more time: [%s] and read data length %d \n", string(body), len(body))
}
```
绝地反击的故事
准备讲 基于Go的Api网关,计划9月底开启录制。欢迎支持啊