我想這是以前曾被問及的答案,但我不知道要搜索什麼才能找到它。這發生在我身上,作爲您在計算機網絡大學課程中學習的東西 - 我從來沒有拿過的東西。如果有人能指出我的答案,那會很好。網絡/ Golang - 對「GET」請求的解析
所以,問題是:
在許多語言中,像圍棋和JavaScript,它是相對簡單的做一個「GET」請求通過HTTP/HTTPS的API。但是表面之下發生了什麼,在一個相對較高層次的描述中呢?
我問,因爲我需要一個更好的理解,以掌握如何處理各種錯誤,我收到時,事情不應該如他們應該的行爲。
對於我打算回答的一種想法,我會參考Golang的http調用方法。在Golang中,您可以導入net/http
包並撥打電話http.Get("http://www.example.com")
。但是你也可以指定一個「客戶端」,你可以配置它來擁有特定的定製頭文件等等。你可以在客戶端中指定一些更復雜的東西,比如使用的傳輸器等等,而我對它並不感興趣的東西除非它解決了我的問題。
基本上,這歸結爲:Go是完全併發的,在我的情況下是並行的。我每秒向一個API發出約300個請求。 golang docs的建議是客戶端對於併發使用是安全的,所以應該只實例化一次 - 實質上,我有一個全局客戶端,通過它來傳輸每個請求。
如果我得到一個錯誤,指出連接已被殺死,是否會影響一個請求,很多請求,我是否必須對客戶端做任何事情以獲得另一個連接?
此外,它是一次一個連接請求,還是有一個新的連接爲每個請求?請求之間的連接是否持續,什麼決定了它們何時死亡?
這個問題可能很漫長,可能沒有意義。如果任何人都可以回答它的任何部分,那將非常感激。
你似乎只是問「http工作如何」? go客戶端處理http/1.1(和go1.6中的http/2)。如果你瞭解協議,客戶的行爲就會如此。這不是http的細節教程的地方。如果你想討論如何使用客戶端,討論一下*郵件列表就是一個更好的論壇,但在這裏你應該提出具體的問題。 – JimB