Go语言http表单解析及log测试(VSCode for mac)
1 、main函数的代码如下,主要做了设置LOG位置并启动监听一个端口⬇️
package main
import (
"fmt"
"io"
"log"
"net/http"
"os"
)
func main() {
logPath := "/Users/xuanwenchao/Documents/vscode_code/log.txt"
fd, err := os.OpenFile(logPath, os.O_RDWR|os.O_CREATE, 0777)
if err == nil {
log.SetOutput(fd)
http.HandleFunc("/", handler_func)
log.Fatal(http.ListenAndServe("localhost:8000", nil))
} else {
fmt.Printf("Create Log file failer!!! %v", err)
}
}
2、为了在浏览器和日志文件中都可以显示log信息,下面我们将输出封装一个封法⬇️
func showAndRecordLog(w io.Writer, format string, a ...interface{}) (n int, err error) {
log.Printf(format, a...)
n, err = fmt.Fprintf(w, format, a...)
return
}
3、下面为http服务收到请求后的响应回调函数⬇️
func handler_func(w http.ResponseWriter, r *http.Request) {
showAndRecordLog(w, "%s %s %s \n", r.Method, r.URL, r.Proto)
for k, v := range r.Header {
showAndRecordLog(w, "Header[%q]=%q\n", k, v)
}
showAndRecordLog(w, "Host=%q\n", r.Host)
showAndRecordLog(w, "RemoteAddr = %q\n", r.RemoteAddr)
if err := r.ParseForm(); err != nil {
showAndRecordLog(w, "ParseForm ERROR:%v", err)
}
for k, v := range r.Form {
showAndRecordLog(w, "Form[%q] = %q\n", k, v)
}
}
4 、接下来我们在VSCODE中编译启动我们的服务,下面是输出信息,表示已经启动⬇️
[Running] go run "/Users/xuanwenchao/Documents/vscode_code/k.go"
5 、这时我们使用浏览器访问一下服务是否可以正常使用⬇️
经验证服务器可以正常响应,浏览器中的信息就是我们输出的
6 、为了测试对form表单的解析,我们需要用postman模拟一个post请求⬇️
分别对http请求的headers和body进行了测试值的输入,send后产生了如下的结果:
通过返回的结果可以看到,对头部和表单体的解都是正常的。
7 、最后我们再验证一下log文件中的内容是否正确⬇️
8 、接下来我想说,我不知道?如何非调式模式下退出启动的服务,于是我做了如下很LOW的方式,哪位大神知道可以告诉我一下⬇️
|
请发表评论