当前位置:网站首页>go基础之web获取参数

go基础之web获取参数

2022-08-09 11:55:00 51CTO

web获取参数一般有header字段,body字段,Form字段

1、先说获取header字段

      
      
package main

import (
"fmt"
"net/http"
)

func header( w http . ResponseWriter, r * http . Request) {
h : = r . Header
fmt . Fprintln( w, h)
}

func main() {
server : = http . Server{
Addr: "127.0.0.1:8080",
}
http . HandleFunc( "/header", header)
server . ListenAndServe()
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

这样r.Header获取到所有Header的参数,如果想获取到其中一项使用

      
      
fmt . Fprintln( w, h[ "User-Agent"])
fmt . Fprintln( w, h . Get( "User-Agent"))
  • 1.
  • 2.

这2个语句的区别是第一个返回一个字符串切片,第二个返回字符串形式。

2、获取body字段

      
      
func header( w http . ResponseWriter, r * http . Request) {
len : = r . ContentLength
body : = make([] byte, len)
r . Body . Read( body)
fmt . Fprintln( w, string( body))
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

3、Form字段

      
      
r . ParseForm()
r . Form
  • 1.
  • 2.

r.ParseForm()是先解析参数,这样r.Form才能获取到。比如有参数abc=111,

使用r.Form["abc"]获取参数,也可以使用r.PostForm。

Form和PostForm之间的区别在于Form可以获取到URL后面的参数和post里面的参数,

PostForm只能获取post中的参数,也就是说Form是可以获取到get方法参数。

      
      
r . FormValue( "hello")
r . PostFormValue( "hello")
  • 1.
  • 2.

这2中方式可以不用执行r.ParseForm()就可以获取参数。

4、MultipartForm

      
      
r . ParseMultipartForm( 1024)
fmt . Fprintln( w, r . MultipartForm)
  • 1.
  • 2.

从multipart编码的表单里面取出多少字节的数据。MultipartForm只能包含表单键值对而不包含URL键值对。

获取上传文件2中方式

1、r.ParseMultipartForm(1024)

      
      
r . MultipartForm . File[ "file"]
  • 1.

2、r.FormFile("file")

      
      
func process( w http . ResponseWriter, r * http . Request) {
r . ParseMultipartForm( 1024)
fileHeader : = r . MultipartForm . File[ "uploaded"][ 0]
file, err : = fileHeader . Open()
if err == nil {
data, err : = ioutil . ReadAll( file)
if err == nil {
fmt . Fprintln( w, string( data))
}
}
}


func process( w http . ResponseWriter, r * http . Request) {
file, _, err : = r . FormFile( "uploaded")
if err == nil {
data, err : = ioutil . ReadAll( file)
if err == nil {
fmt . Fprintln( w, string( data))
}
}
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
原网站

版权声明
本文为[51CTO]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_3764469/5557877