Golang 转生到web世界 - curl

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


<<:  【Day 04】- 今天来把 Module 藏起来(基於 PEB 断链,隐藏 DLL 的方法)

>>:  Day 6 : 数学运算与逻辑判断

[FHIR 从入门到放弃] Day 03-FHIR 服务器安装

说明 关於 FHIR 服务器 FHIR 有非常多服务器端的实作,这边使用的是 HAPI FHIR。这...

[Day 13] 非同步的操作资料库?谈 suspendedTransactionAsync

前面我们聊到了如何存取资料库,以及遇到 N+1 问题时该如何发现以及解决问题。 今天我们来谈谈 Ex...

Day 21 单向资料流

第 21 天 ! 我们来了解 react 的 资料流(data flow), 在我们之前做的To D...

Spring Framework X Kotlin Day 1 Introduction

GitHub Repo https://github.com/b2etw/Spring-Kotlin...

第30车厢-各位乘客们,我们到站啦!

回顾30天 平常都是这样的我 可是想不到,为了这30天,每天都只能 阿爸阿母不经过来关心说:阿~女儿...