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