iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
自我挑戰組

go go let's go - golang 從0開始系列 第 19

Golang 轉生到web世界 - curl

  • 分享至 

  • xImage
  •  

Golang

跟web有關的不外乎還有curl

什麼是cURL?
cURL是一個開源專案,主要的產品是curl(命令列工具)和libcurl(C語言的API庫),兩者功能均是:基於網路協定,對指定URL進行網路傳輸。 來自wiki的解釋。

那在golang上,我們該如何實現cURL呢?廢話不多說,直接上個程式碼來看看

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	response, err := http.Get("http://www.google.com")
	if err != nil {
		panic(err)
	}
	defer response.Body.Close()
	body, err := ioutil.ReadAll(response.Body)
	fmt.Println(string(body))
}

ioutil.ReadAll是io/ioutil這個package所支援的東西,大致常看到的有ioutil.ReadAll()、ioutil.ReadFile、ioutil.TempDir()、WriteFile()…等。

那ioutil.ReadAll()是什麼,如果使用vscode的朋友可以點擊function過去看看原始碼的部分,他是調用了readAll,將內容一直讀取,直到EOF為止。

要注意的是要記得加上關閉唷(Body.Close())
如果要改成post 可以試著修改其中的

    response, err := http.Post(
        "http://localhost/index.php",
        "application/x-www-form-urlencoded",
        strings.NewReader("name=tom &tel=99"),
    )

那如果我們需要header加點料的話,則可以使用Header.Set 或者 Header.Add

如果我們需要拿http status code或者header 則可以改成使用

fmt.Println(response.StatusCode)
fmt.Println(response.Header)

參考資料
https://pkg.go.dev/io/ioutil


上一篇
Golang 轉生到web世界 - 套件管理
下一篇
Golang 轉生到web世界 - gin新手村
系列文
go go let's go - golang 從0開始30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言