0
点赞
收藏
分享

微信扫一扫

go基础之web获取参数

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()
}

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

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

这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))
}

3、Form字段

r.ParseForm()
r.Form

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")

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

4、MultipartForm

r.ParseMultipartForm(1024)
fmt.Fprintln(w, r.MultipartForm)

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

获取上传文件2中方式

1、r.ParseMultipartForm(1024)

r.MultipartForm.File["file"]

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))
}
}
}

举报

相关推荐

0 条评论