国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Golang - GO接收GET/POST參數及發送GET/POST請求的實例詳解

GO接收GET/POST參數及發送GET/POST請求的實例詳解

2021-02-21 00:51qq_27312939 Golang

這篇文章主要介紹了GO接收GET/POST參數及發送GET/POST請求,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

 

Golang: 接收GETPOST參數

 

GET 和 POST 是我們最常用的兩種請求方式,今天講一講如何在 golang 服務中,正確接收這兩種請求的參數信息。

處理GET請求

1.1 接收GET請求

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//接收GET請求
func Get(writer http.ResponseWriter , request *http.Request) {
 
 query := request.URL.Query()
 
 // 第一種方式
 // id := query["id"][0]
 
 // 第二種方式
 
 id := query.Get("id")
 
 log.Printf("GET: id=%s\n", id)
 
 fmt.Fprintf(writer, `{"code":0}`)
}
func main(){
 
 http.HandleFunc("/get", Get)
 log.Println("Running at port 9999 ...")
 err := http.ListenAndServe(":9999", nil)
 if err != nil {
  log.Fatal("ListenAndServe: ", err.Error())
 }
 
}

Postman 發起get請求

GO接收GET/POST參數及發送GET/POST請求的實例詳解

重新運行程序,請求Postman,服務端控制臺打印如下:

2020/12/04 11:33:55 Running at port 9999 ...
2020/12/04 11:34:09 GET: id=123

1.2 接收GET請求

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
func Get(writer http.ResponseWriter , request *http.Request) {
 
 result := make(map[string]string)
 keys := request.URL.Query()
 for k, v := range keys {
  result[k] = v[0]
 }
 log.Println(result)
}
 
func main(){
 
 http.HandleFunc("/get", Get)
 log.Println("Running at port 9999 ...")
 err := http.ListenAndServe(":9999", nil)
 if err != nil {
  log.Fatal("ListenAndServe: ", err.Error())
 }
 
}

重新運行程序,請求Postman,服務端控制臺打印如下:

2020/12/04 12:37:17 Running at port 9999 ...
2020/12/04 12:37:21 map[id:123 name:sina]

需要注意的是,這里的req.URL.Query()返回的是數組,因為go可以接收id=1&id=2這樣形式的參數并放到同一個key下

接收POST請求

在開發中,常用的 POST 請求有兩種,分別是 application/json 和 application/x-www-form-urlencoded,下面就來介紹一下這兩種類型的處理方式。

1.1 接收application/x-www-form-urlencoded類型的POST請求

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
func handlePostForm(writer http.ResponseWriter, request *http.Request) {
 request.ParseForm()
 
 // 第一種方式
 // username := request.Form["username"][0]
 // password := request.Form["password"][0]
 
 // 第二種方式
 username := request.Form.Get("username")
 password := request.Form.Get("password")
 
 fmt.Printf("POST form-urlencoded: username=%s, password=%s\n", username, password)
 
 fmt.Fprintf(writer, `{"code":0}`)
}
 
func main(){
 
 http.HandleFunc("/handlePostForm", handlePostForm)
 log.Println("Running at port 9999 ...")
 err := http.ListenAndServe(":9999", nil)
 if err != nil {
  log.Fatal("ListenAndServe: ", err.Error())
 }
 
}

Postman 發起x-www-form-urlencoded請求

GO接收GET/POST參數及發送GET/POST請求的實例詳解

重新運行程序,請求Postman,服務端控制臺打印如下:

2020/12/04 12:44:32 Running at port 9999 ...
POST form-urlencoded: username=李四, password=12

1.2 接收application/x-www-form-urlencoded類型的POST請求

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
func PostForm(w http.ResponseWriter, r *http.Request) {
 
 var result = make(map[string]string)
 r.ParseForm()
 for k,v := range r.PostForm {
  if len(v) < 1 { continue }
  result[k] = v[0]
 }
 
 log.Println(result)
 
}
 
func main(){
 
 http.HandleFunc("/PostForm", PostForm)
 log.Println("Running at port 9999 ...")
 err := http.ListenAndServe(":9999", nil)
 if err != nil {
  log.Fatal("ListenAndServe: ", err.Error())
 }
 
}

重新運行程序,請求Postman,服務端控制臺打印如下:

2020/12/04 12:49:40 Running at port 9999 ...
2020/12/04 12:49:45 map[password:12 username:李四]

2 處理 application/json 請求

實際開發中,往往是一些數據對象,我們需要將這些數據對象以 JSON 的形式返回,下面我們就來添加一段代碼:

JSON 結構
比如,請求了手機歸屬地的接口,json 數據返回如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
{
 "resultcode": "200",
 "reason": "Return Successd!",
 "result": {
  "province": "浙江",
  "city": "杭州",
  "areacode": "0571",
  "zip": "310000",
  "company": "中國移動",
  "card": ""
 }
}

思路是這樣的:

1.先將 json 轉成 struct。

2.然后 json.Unmarshal() 即可。

json 轉 struct ,自己手寫就太麻煩了,有很多在線的工具可以直接用,我用的這個:

https://mholt.github.io/json-to-go/

在左邊貼上 json 后面就生成 struct 了。

用代碼實現下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
//AutoGenerated 結構體
type AutoGenerated struct {
  Resultcode string `json:"resultcode"`
  Reason  string `json:"reason"`
  Result  struct {
    Province string `json:"province"`
    City  string `json:"city"`
    Areacode string `json:"areacode"`
    Zip  string `json:"zip"`
    Company string `json:"company"`
    Card  string `json:"card"`
  } `json:"result"`
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
func PostJson(w http.ResponseWriter, r *http.Request ) {
 
 body ,err := ioutil.ReadAll(r.Body)
 if err != nil {
  log.Println( err)
 }
 log.Printf("%s",body)
 
 var data AutoGenerated
 json.Unmarshal([]byte(body),&data)
 
 //Json結構返回
 json,_ := json.Marshal(data)
 w.Write(json)
 
}
 
func main(){
 
 http.HandleFunc("/PostJson", PostJson)
 log.Println("Running at port 9999 ...")
 err := http.ListenAndServe(":9999", nil)
 if err != nil {
  log.Fatal("ListenAndServe: ", err.Error())
 }
 
}

Postman 發起application/json 請求

GO接收GET/POST參數及發送GET/POST請求的實例詳解

重新運行程序,訪問頁面,服務端控制臺打印如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
2020/12/04 12:57:01 {
 "resultcode": "200",
 "reason": "Return Successd!",
 "a":"dd",
 "result": {
  "province": "浙江",
  "city": "杭州",
  "areacode": "0571",
  "zip": "310000",
  "company": "中國移動",
  "card": "33"
 }
}

到此這篇關于GO接收GET/POST參數及發送GET/POST請求的文章就介紹到這了,更多相關GO接收GET/POST參數內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/qq_27312939/article/details/110632297

延伸 · 閱讀

精彩推薦
  • GolangGolang通脈之數據類型詳情

    Golang通脈之數據類型詳情

    這篇文章主要介紹了Golang通脈之數據類型,在編程語言中標識符就是定義的具有某種意義的詞,比如變量名、常量名、函數名等等,Go語言中標識符允許由...

    4272021-11-24
  • Golanggolang如何使用struct的tag屬性的詳細介紹

    golang如何使用struct的tag屬性的詳細介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細介紹,從例子說起,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看...

    Go語言中文網11352020-05-21
  • GolangGolang中Bit數組的實現方式

    Golang中Bit數組的實現方式

    這篇文章主要介紹了Golang中Bit數組的實現方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    天易獨尊11682021-06-09
  • Golanggolang json.Marshal 特殊html字符被轉義的解決方法

    golang json.Marshal 特殊html字符被轉義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉義的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    李浩的life12792020-05-27
  • Golanggolang 通過ssh代理連接mysql的操作

    golang 通過ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過ssh代理連接mysql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    a165861639710342021-03-08
  • Golanggo日志系統logrus顯示文件和行號的操作

    go日志系統logrus顯示文件和行號的操作

    這篇文章主要介紹了go日志系統logrus顯示文件和行號的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    SmallQinYan12302021-02-02
  • Golanggo語言制作端口掃描器

    go語言制作端口掃描器

    本文給大家分享的是使用go語言編寫的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • Golanggolang的httpserver優雅重啟方法詳解

    golang的httpserver優雅重啟方法詳解

    這篇文章主要給大家介紹了關于golang的httpserver優雅重啟的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,...

    helight2992020-05-14
主站蜘蛛池模板: 毛片一级片| 中文字幕亚洲欧美 | 91精品在线看 | 激情综合色综合久久综合 | 午夜视频在线免费观看 | 免费成人在线网站 | 黄色片视频在线播放 | 凹凸日日摸日日碰夜夜爽孕妇 | 精精国产xxxx视频在线播放7 | 99久久精品一区二区成人 | 黄色在线免费观看视频网站 | 久久人爽 | 久久免费公开视频 | 一区二区av | 国产精品99久久久久久动医院 | 99国产视频 | 日韩精品成人 | 日韩成人在线一区 | 另类一区 | 久久噜噜噜精品国产亚洲综合 | 日韩欧美精品一区二区三区 | 免费观看av| 久久免费精品视频 | 国产日日夜夜操 | 日韩国产在线 | 男人天堂v| 国产视频中文字幕 | 国产一区二区三区在线 | 欧洲精品视频在线观看 | 俺去俺来也在线www色官网 | 欧美精品在线观看 | 亚洲一区 欧美 | 日日嗨av一区二区三区四区 | 成人免费在线视频播放 | 久久精品国产免费 | 日韩欧美精品一区二区三区 | 欧美精品区 | 国产精品久久久久久亚洲影视 | 黄色在线观看 | 欧美日韩电影一区 | 国产精品成人3p一区二区三区 |