server端参数获取

编写一个httpserver用于解释request 结构体对象的参数

  1. package mian
  2. import "net/http"
  3. func main(){
  4. addr:="0.0.0.0:8888"
  5. http.HandleFunc("/",func(w http.ResponseWriter,r *http.Request){ //绑定一个用匿名函数,其中r参数为Request对象
  6. fmt.Fprint(w,time.Now().format("2006-01-02 15:04:05"))
  7. // 1.提交数据方式
  8. /*
  9. 在URL中传递数据:url?argmane1=argvalue1&argname2=argvalue2 常用方法:GET POST
  10. */
  11. r.ParseForm() //解析参数
  12. fmt.Println(r.Form) //接收的参数类型都是string;可以获取url中的参数,也可以获取body中的参数
  13. fmt.Println(r.Form.Get("x")) //只返回第一个参数
  14. fmt.Println(r.Form["x"]) //返回参数对应的字符串切片
  15. // 2. 通过body提交数据,如:// curl -d "xxxx" url
  16. /*
  17. body中数据格式有3种
  18. application/x-www-form-urlencoded a=b&c=d
  19. multipart/form-data 一般用于上传文件
  20. 其他类型=>需要自解码:
  21. application/json
  22. application/xml (不常用)
  23. 自己定义
  24. */
  25. /*
  26. application/x-www-form-urlencoded 数据格式
  27. // Form 可以获取URL中参数也可以获取body中的参数
  28. // PostForm 只可获取body中的参数,其他数据无法获取
  29. */
  30. //application/json
  31. io.Copy(os.Stdout,r.Body) //打印到console
  32. ctx,_:=ioutil.ReadAll(r.Body)
  33. var j map[string]string
  34. json.Unmarshal(ctx,&j) //需要一个字节切片
  35. fmt.Printf("%#v\n",j)
  36. //multipart/form-data 上传文件
  37. r.ParseMultipartForm(1024*1024) //每次接收文件数据最大使用的内存量
  38. fmt.Println(r.MultipartForm.File)
  39. fmt.Println(r.MultipartForm.File)
  40. fmt.Println(r.Form)
  41. fmt.Println(r.PostForm)
  42. if fileHeaders,ok:=r.MultipartForm.File["x"];ok{
  43. for,_,fileHeader:=range fileHea
  44. }
  45. })
  46. http.ListenAndServe(addr,nil)
  47. fmt.Println(err)
  48. }

在webclient端参数则对应的是 response

文档更新时间: 2022-03-13 19:36   作者:张尚