server端参数获取
编写一个httpserver用于解释request 结构体对象的参数
package mian
import "net/http"
func main(){
addr:="0.0.0.0:8888"
http.HandleFunc("/",func(w http.ResponseWriter,r *http.Request){ //绑定一个用匿名函数,其中r参数为Request对象
fmt.Fprint(w,time.Now().format("2006-01-02 15:04:05"))
// 1.提交数据方式
/*
在URL中传递数据:url?argmane1=argvalue1&argname2=argvalue2 常用方法:GET POST
*/
r.ParseForm() //解析参数
fmt.Println(r.Form) //接收的参数类型都是string;可以获取url中的参数,也可以获取body中的参数
fmt.Println(r.Form.Get("x")) //只返回第一个参数
fmt.Println(r.Form["x"]) //返回参数对应的字符串切片
// 2. 通过body提交数据,如:// curl -d "xxxx" url
/*
body中数据格式有3种
application/x-www-form-urlencoded a=b&c=d
multipart/form-data 一般用于上传文件
其他类型=>需要自解码:
application/json
application/xml (不常用)
自己定义
*/
/*
application/x-www-form-urlencoded 数据格式
// Form 可以获取URL中参数也可以获取body中的参数
// PostForm 只可获取body中的参数,其他数据无法获取
*/
//application/json
io.Copy(os.Stdout,r.Body) //打印到console
ctx,_:=ioutil.ReadAll(r.Body)
var j map[string]string
json.Unmarshal(ctx,&j) //需要一个字节切片
fmt.Printf("%#v\n",j)
//multipart/form-data 上传文件
r.ParseMultipartForm(1024*1024) //每次接收文件数据最大使用的内存量
fmt.Println(r.MultipartForm.File)
fmt.Println(r.MultipartForm.File)
fmt.Println(r.Form)
fmt.Println(r.PostForm)
if fileHeaders,ok:=r.MultipartForm.File["x"];ok{
for,_,fileHeader:=range fileHea
}
})
http.ListenAndServe(addr,nil)
fmt.Println(err)
}
在webclient端参数则对应的是 response
文档更新时间: 2022-03-13 19:36 作者:张尚