新聞中心
Go語言里面提供了一個完善的 net/http 包,通過 net/http 包我們可以很方便的搭建一個可以運行的 Web 服務(wù)器。同時使用 net/http 包能很簡單地對 Web 的路由,靜態(tài)文件,模版,cookie 等數(shù)據(jù)進行設(shè)置和操作。

站在用戶的角度思考問題,與客戶深入溝通,找到埇橋區(qū)網(wǎng)站設(shè)計與埇橋區(qū)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋埇橋區(qū)地區(qū)。
Web服務(wù)器的工作方式
我們平時瀏覽網(wǎng)頁的時候,會打開瀏覽器,然后輸入網(wǎng)址后就可以顯示出想要瀏覽的內(nèi)容。這個看似簡單的過程背后卻隱藏了非常復(fù)雜的操作。
對于普通的上網(wǎng)過程,系統(tǒng)其實是這樣做的:
- 瀏覽器本身是一個客戶端,當(dāng)在瀏覽器中輸入 URL (網(wǎng)址)的時候,首先瀏覽器會去請求 DNS 服務(wù)器,通過 DNS 獲取相應(yīng)的域名對應(yīng)的 IP,然后通過 IP 地址找到對應(yīng)的服務(wù)器后,要求建立 TCP 連接;
- 與服務(wù)器建立連接后,瀏覽器會向服務(wù)器發(fā)送 HTTP Request (請求)包;
- 服務(wù)器接收到請求包之后開始處理請求包,并調(diào)用自身服務(wù),返回 HTTP Response(響應(yīng))包;
- 客戶端收到來自服務(wù)器的響應(yīng)后開始渲染這個 Response 包里的主體(body),等收到全部的內(nèi)容后斷開與該服務(wù)器之間的 TCP 連接。
圖:用戶訪問一個站點的過程
通過上圖可以將 Web 服務(wù)器的工作原理簡單地歸納為:
- 客戶機通過 TCP/IP 協(xié)議與服務(wù)器建立 TCP 連接;
- 客戶端向服務(wù)器發(fā)送 HTTP 協(xié)議請求包,請求服務(wù)器里的資源文檔;
- 服務(wù)器向客戶機發(fā)送 HTTP 協(xié)議應(yīng)答包,如果請求的資源包含有動態(tài)語言的內(nèi)容,那么服務(wù)器會調(diào)用動態(tài)語言的解釋引擎負(fù)責(zé)處理“動態(tài)內(nèi)容”,并將處理得到的數(shù)據(jù)返回給客戶端;
- 客戶機與服務(wù)器斷開,由客戶端解釋 HTML 文檔,在客戶端屏幕上渲染圖形結(jié)果。
搭建一個簡單的 Web 服務(wù)器
前面簡單介紹了 Web 服務(wù)器的工作原理,那么如何用Go語言搭建一個 Web 服務(wù)器呢?示例代碼如下:
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", index) // index 為向 url發(fā)送請求時,調(diào)用的函數(shù)
log.Fatal(http.ListenAndServe("localhost:8000", nil))
}
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "C語言中文網(wǎng)")
} 使用 go run 命令運行上面的代碼:
go run main.go
運行之后并沒有什么提示信息,但是命令行窗口會被占用(不能再輸入其它命令)。這時我們在瀏覽器中輸入 localhost:8000 可以看到下圖所示的內(nèi)容,則說明我們的服務(wù)器成功運行了。
圖:localhost:8000
提示:運行 Web 服務(wù)器會占用命令行窗口,我們可以使用 Ctrl+C 組合鍵來退出。
上面的代碼只是展示了 Web 服務(wù)器的簡單應(yīng)用,下面我們來完善一下,為這個服務(wù)器添加一個頁面并設(shè)置訪問的路由。
首先我們準(zhǔn)備一個 html 文件,并命名為 index.html,代碼如下所示:
C語言中文網(wǎng)
C語言中文網(wǎng)
然后將我們上面寫的 Web 服務(wù)器的代碼簡單修改一下,如下所示:
package main
import (
"io/ioutil"
"log"
"net/http"
)
func main() {
// 在/后面加上 index ,來指定訪問路徑
http.HandleFunc("/index", index)
log.Fatal(http.ListenAndServe("localhost:8000", nil))
}
func index(w http.ResponseWriter, r *http.Request) {
content, _ := ioutil.ReadFile("./index.html")
w.Write(content)
} 使用 go run 命令運行:
go run main.go
運行成功后,在瀏覽器中輸入 localhost:8000/index 就可以看到我們所添加的頁面了,如下圖所示:
圖:瀏覽 localhost:8000/index 頁面
當(dāng)前題目:創(chuàng)新互聯(lián)GO教程:Go語言實現(xiàn)Web服務(wù)器
文章位置:http://m.fisionsoft.com.cn/article/ccdsdij.html


咨詢
建站咨詢
