[Go]net/HTTP封包

閱讀時間約 8 分鐘

HTTP伺服器端

package main

import (
"net/http"
)

type Refer struct {
handler http.Handler
refer string
}

//實現中介軟體邏輯​
func (this *Refer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if r.Referer() == this.refer {
this.handler.ServeHTTP(w, r)
} else {
w.WriteHeader(403)
}
}

//事件處理​
func myHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("this is handler"))
}

func hello(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("hello"))
}

func main() {
referer := &Refer{
handler: http.HandlerFunc(myHandler),//註冊路由
refer: "www.xxx.com",
}
http.HandleFunc("/hello", hello)//註冊路由
http.ListenAndServe(":8080", referer)//開啟監聽
}


HTTPS伺服器端

創建憑證

//在終端機輸入底下代碼
openssl req -newkey ras:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt


package main

import (
"log"
"net/http"
)

func main() {
// 啟動伺服器
srv := &http.Server{Addr: ":8088", Handler: http.HandlerFunc(handle)}
// 用TLS啟動伺服器,因為我們執行的是http/2,它必須是與TLS一起運作。
log.Printf("Serving on https://0.0.0.0:8088")
log.Fatal(srv.ListenAndServeTLS("server.crt", "server.key"))
}

//處理器方法
func handle(w http.ResponseWriter, r *http.Request) {
// 記錄請求協定
log.Printf("Got connection: %s", r.Proto)
// 向客戶發送一則訊息
w.Write([]byte("Hello this is a HTTP/2 message!"))
}


用戶端

GET

package main

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

func main() {
resp, err := http.Get("https://www.xxx.com")
if err != nil {
fmt.Print("err", err)
}
closer := resp.Body
bytes, err := ioutil.ReadAll(closer)
fmt.Println(string(bytes))
}


DELETE

package main

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

func main() {
url := "http://www.xxx.com/comment/add"
payload := strings.NewReader("{\"userId\":1,\"articleId\":1,\"comment\":\"xxxx\"}")
req, _ := http.NewRequest("DELETE", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

fmt.Println(res)
fmt.Println(string(body))
}


POST

package main

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

func main() {
url := "http://www.xxx.com/comment/add"
body := "{\"userId\":1,\"articleId\":1,\"comment\":\"xxx\"}"
response, err := http.Post(url, "•application/x-www-form-urlencoded", bytes.NewBuffer([]byte(body)))
if err != nil {
fmt.Println("err", err)
}
b, err := ioutil.ReadAll(response.Body)
fmt.Println(string(b))
}


PUT

package main

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

func main() {
url := "http://www.xxx.com/comment/add"
payload := strings.NewReader("{\"userId\":1,\"articleId\":1,\"comment\":\"xxx\"}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

fmt.Println(res)
fmt.Println(string(body))
}


自定義header

headers := http.Header{"token": {"46r6ttyfy67fy"}}
headers.Add("Accept-Charset", "UTF-8")
headers.Set("Host", "www.xxx.com")
headers.Set("Location", "www.xxx.com")
8會員
123內容數
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
我拾起一只玻璃瓶 從那條靜靜的河流裡 河水浸濕了我的袖緣 我扭開了那只玻璃瓶 在那煙硝瀰漫的河岸邊 瓶蓋劃傷了我的指尖 飛灰伴著鮮血掉落瓶裡面 瓶裡的花兒早已凋謝 那曾經是某人對於某人的思念 此刻正如這朵花兒一樣消逝枯萎 我的血給那枯黃抹上了紅 塵灰如降雪般給添上了白 袖旁落下的水滴給潤了葉 花兒甦
Thumbnail
《Good boy gone bad》是男團TXT發表的迷你四輯《minisode 2: Thursday's Child》當中的主打歌。五名男孩們褪去過往青澀的樣貌,在重金屬音樂的激烈渲染之下,說出一段因為愛而自毀的告白。究竟,男孩們在這首歌裡怎麼樣長大了呢?一起透過以下的文字來了解吧!
Thumbnail
Will you forget me? If one day you went and you left me? Or when that day comes when I pass on and I'm gone   I been awake just tossing in bed  
Where have all the money gone? Young bears picked them every house. Where have all the young bears gone ? gone to half-known everywhere.
Thumbnail
這首發表於1918年相當於102年前的爵士樂,算百年金曲吧,100年後聆聽卻一點都不覺得過時。 Youtube上可以找到不少翻唱及cover, 但我最喜歡的還是這首據說是原唱https://www.youtube.com/watch?v=VW33oH_EkW4 誰知道呢? 大概要找1900年代出生
Thumbnail
在紐約的一個圖書館裡,Amy and Nick 仍在熱戀中,他們又在玩尋寶遊戲,那張卡片,就藏在 Jane Austen 的小說裡。
Thumbnail
Nick and Amy 這對夫妻之間,喜好「遊戲(game)」,其中一種遊戲是 尋寶遊戲(Treasure Hunt)。仔細想想,《控制》這部電影,其實也是導演,給觀眾玩的一場尋寶遊戲,哪個寶呢?Amazing Amy!
Thumbnail
《控制》,英文片名原本為,Gone Girl。有沒有覺得有點奇怪,如果要說「失蹤的人」,可以用 a missing girl,或者,也可用 a lost girl,為什麼這個故事的名稱,要搞個很怪的詞,"gone girl"。
Thumbnail
其實,我不是不知道你難過 只是,我真的不知道我的心遺落在哪裡 就好像我對每個人的眼淚都有一定的quota 用完了,就算那個人死在我面前,我也掉不出一滴眼淚 我的愛情好像也用完 好像沒辦法再真正愛誰 對於這樣的自己,我也很無奈 也許,太晚到的你,真的不如不要遇見吧
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
我拾起一只玻璃瓶 從那條靜靜的河流裡 河水浸濕了我的袖緣 我扭開了那只玻璃瓶 在那煙硝瀰漫的河岸邊 瓶蓋劃傷了我的指尖 飛灰伴著鮮血掉落瓶裡面 瓶裡的花兒早已凋謝 那曾經是某人對於某人的思念 此刻正如這朵花兒一樣消逝枯萎 我的血給那枯黃抹上了紅 塵灰如降雪般給添上了白 袖旁落下的水滴給潤了葉 花兒甦
Thumbnail
《Good boy gone bad》是男團TXT發表的迷你四輯《minisode 2: Thursday's Child》當中的主打歌。五名男孩們褪去過往青澀的樣貌,在重金屬音樂的激烈渲染之下,說出一段因為愛而自毀的告白。究竟,男孩們在這首歌裡怎麼樣長大了呢?一起透過以下的文字來了解吧!
Thumbnail
Will you forget me? If one day you went and you left me? Or when that day comes when I pass on and I'm gone   I been awake just tossing in bed  
Where have all the money gone? Young bears picked them every house. Where have all the young bears gone ? gone to half-known everywhere.
Thumbnail
這首發表於1918年相當於102年前的爵士樂,算百年金曲吧,100年後聆聽卻一點都不覺得過時。 Youtube上可以找到不少翻唱及cover, 但我最喜歡的還是這首據說是原唱https://www.youtube.com/watch?v=VW33oH_EkW4 誰知道呢? 大概要找1900年代出生
Thumbnail
在紐約的一個圖書館裡,Amy and Nick 仍在熱戀中,他們又在玩尋寶遊戲,那張卡片,就藏在 Jane Austen 的小說裡。
Thumbnail
Nick and Amy 這對夫妻之間,喜好「遊戲(game)」,其中一種遊戲是 尋寶遊戲(Treasure Hunt)。仔細想想,《控制》這部電影,其實也是導演,給觀眾玩的一場尋寶遊戲,哪個寶呢?Amazing Amy!
Thumbnail
《控制》,英文片名原本為,Gone Girl。有沒有覺得有點奇怪,如果要說「失蹤的人」,可以用 a missing girl,或者,也可用 a lost girl,為什麼這個故事的名稱,要搞個很怪的詞,"gone girl"。
Thumbnail
其實,我不是不知道你難過 只是,我真的不知道我的心遺落在哪裡 就好像我對每個人的眼淚都有一定的quota 用完了,就算那個人死在我面前,我也掉不出一滴眼淚 我的愛情好像也用完 好像沒辦法再真正愛誰 對於這樣的自己,我也很無奈 也許,太晚到的你,真的不如不要遇見吧