[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
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
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
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
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 用完了,就算那個人死在我面前,我也掉不出一滴眼淚 我的愛情好像也用完 好像沒辦法再真正愛誰 對於這樣的自己,我也很無奈 也許,太晚到的你,真的不如不要遇見吧