Pensieve
日常记录
日常记录
  • tool

    • yarn
    • powershell
    • 编辑器
    • git命令提示
    • vim
    • gitlab
    • husky-git钩子工具
  • wsl

    • 本机代理
  • html

    • 不常用功能
  • js

    • math 相关
    • js 日期相关
    • API参考
    • 算法相关
    • 图片相关
    • js 事件相关
    • 数据结构相关
    • vue
    • rxjs相关
  • node

    • 文件操作
    • svg压缩工具-svgo
  • go

    • go的一些命令
    • 文件操作
    • 网络相关
    • 目录结构推荐
    • 常用三方库
    • wasm
  • rust

    • Rust 入门笔记
    • wasm
    • 一些库
    • 圣经记录
  • linux

    • hyprland的一些问题
  • 杂项

    • 视频流相关

网络相关

net/http

httpListenAndServe**(port string, handler Handler)

第一个参数是监听的端口、第二个参数是根页面的处理函数,可以为空

*http.Request类型详解

func sayhello(w http.ResponseWriter, r *http.Request) {
	// r.ParseForm()       //解析参数,默认是不会解析的
	//这些信息是输出到服务器端的打印信息
	fmt.Println("Request解析")
	//HTTP方法
	fmt.Println("method", r.Method)
	// RequestURI是被客户端发送到服务端的请求的请求行中未修改的请求URI
	fmt.Println("RequestURI", r.RequestURI)
	//URL类型,下方分别列出URL的各成员
	fmt.Println("URL_scheme", r.URL.Scheme)
	fmt.Println("URL_opaque", r.URL.Opaque)
	fmt.Println("URL_user", r.URL.User.String())
	fmt.Println("URL_host", r.URL.Host)
	fmt.Println("URL_path", r.URL.Path)
	fmt.Println("URL_RawQuery", r.URL.RawQuery)
	fmt.Println("URL_Fragment", r.URL.Fragment)
	//协议版本
	fmt.Println("proto", r.Proto)
	fmt.Println("protomajor", r.ProtoMajor)
	fmt.Println("protominor", r.ProtoMinor)
	//HTTP请求的头域
	for k, v := range r.Header {
		// fmt.Println("Header key:" + k)
		for _, vv := range v {
			fmt.Println("header key:" + k + "  value:" + vv)
		}
	}
	//判断是否multipart方式
	is_multipart := false
	for _, v := range r.Header["Content-Type"] {
		if strings.Index(v, "multipart/form-data") != -1 {
			is_multipart = true
		}
	}
	//解析body
	if is_multipart == true {
		r.ParseMultipartForm(128)
		fmt.Println("解析方式:ParseMultipartForm")
	} else {
		r.ParseForm()
		fmt.Println("解析方式:ParseForm")
	}
	//body内容长度
	fmt.Println("ContentLength", r.ContentLength)
	//是否在回复请求后关闭连接
	fmt.Println("Close", r.Close)
	//HOSt
	fmt.Println("host", r.Host)
	//form
	fmt.Println("Form", r.Form)
	//postform
	fmt.Println("PostForm", r.PostForm)
	//MultipartForm
	fmt.Println("MultipartForm", r.MultipartForm)
	//解析MultipartForm内的文件
	files := r.MultipartForm.File
	for k, v := range files {
		fmt.Println(k)
		for _, vv := range v {
			fmt.Println(k + ":" + vv.Filename)
		}
	}
	//该请求的来源地址
	fmt.Println("RemoteAddr", r.RemoteAddr)
	fmt.Fprintf(w, "hello astaxie!") //这个写入到w的是输出到客户端的
}
Last Updated: 12/15/20, 3:18 PM
Contributors: dxy2233
Prev
文件操作
Next
目录结构推荐