自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在 Go 中構(gòu)建一個(gè)基本的 Web 服務(wù)器

系統(tǒng)
Go 強(qiáng)大的內(nèi)置包集合使其成為 Web 編程的優(yōu)秀選擇,本文將教你如何用 Go 編寫一個(gè)基本的 Web 服務(wù)器。

Go 是一種大有前途的編程語言,用于構(gòu)建現(xiàn)代 Web 應(yīng)用程序和系統(tǒng)軟件。它一發(fā)布就席卷了科技行業(yè),并為 Docker、Kubernetes、Terraform、Dropbox 和 Netflix 等服務(wù)提供支持。

此外,Go 強(qiáng)大的內(nèi)置包集合使其成為 Web 編程的絕佳選擇。本文將教你如何用 Go 編寫一個(gè)基本的 Web 服務(wù)器。

導(dǎo)入必要的包

net/HTTP 包提供了創(chuàng)建 Web 服務(wù)器和客戶端所需的一切。這個(gè)包公開了幾個(gè)處理 Web 編程的有用函數(shù)。

您可以通過在源代碼頂部添加以下行來導(dǎo)入它:

import "net/http"

我們還將使用fmt包來格式化字符串,使用log包來處理錯(cuò)誤。您可以如上所示單獨(dú)導(dǎo)入它們,也可以使用單個(gè)導(dǎo)入語句分解所有包:

import (
"fmt"
"log"
"net/http"
)

導(dǎo)入所需的包后,您可以繼續(xù)編寫 main 函數(shù)。繼續(xù)并使用.go擴(kuò)展名保存源文件。如果您使用的是 Vim,請(qǐng)使用以下命令保存并退出 Vim:

:wq linuxmi.server.go

編寫主函數(shù)

Go 程序存在于 main 函數(shù)中,恰當(dāng)?shù)孛麨椤癿ain”。您需要在此處實(shí)現(xiàn)服務(wù)器調(diào)用。在源代碼中添加以下行并查看它們的作用:

func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}

我們使用func關(guān)鍵字定義主函數(shù)。Go 對(duì)左大括號(hào)的放置有嚴(yán)格的規(guī)定,因此請(qǐng)確保大括號(hào)在正確的行上。main 中的第一條語句定義所有到達(dá)根 ( “/” ) 路徑的 Web 請(qǐng)求都將由index處理,index 是http.HandlerFunc類型的函數(shù)。

第二行通過http.ListenAndServe函數(shù)啟動(dòng) Web 服務(wù)器。它向服務(wù)器發(fā)出信號(hào),以持續(xù)偵聽主機(jī)端口 8080 上的傳入 HTTP 請(qǐng)求。需要此函數(shù)的第二個(gè)參數(shù)來阻止程序直到終止。

由于 http.ListenAndServe 總是返回錯(cuò)誤,我們將這個(gè)調(diào)用包裝在log.Fatal調(diào)用中。此語句記錄在服務(wù)器端生成的任何錯(cuò)誤消息。

實(shí)現(xiàn)處理函數(shù)

可以看到,主函數(shù)調(diào)用處理函數(shù)索引來處理客戶端請(qǐng)求。但是,我們還沒有為我們的服務(wù)器定義這個(gè)函數(shù)。

讓我們添加必要的語句以使索引函數(shù)可用:

func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "大家好,歡迎來到Linux迷 %s!", r.URL.Path[1:])
}

此函數(shù)采用http.ResponseWriter和http.Request類型的兩個(gè)不同參數(shù)。http.ResponseWriter 參數(shù)包含服務(wù)器對(duì)傳入請(qǐng)求的響應(yīng),它以 http.Request 對(duì)象的形式出現(xiàn)。

fmt 包中的 Fprintf 函數(shù)用于顯示和操作文本字符串。我們使用它來顯示服務(wù)器對(duì)我們的網(wǎng)絡(luò)請(qǐng)求的響應(yīng)。最后,r.URL.Path[1:]組件用于獲取根路徑之后的數(shù)據(jù)。

將所有部分加在一起

將所有部分添加在一起后,您的 Go Web 服務(wù)器應(yīng)該已經(jīng)準(zhǔn)備就緒。代碼應(yīng)類似于以下內(nèi)容:

package main
import (
"fmt"
"log"
"net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "大家好,歡迎來到Linux迷 %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}

第一行用于將此 Go Web 服務(wù)器代碼編譯為可執(zhí)行文件。

使用 Go 構(gòu)建 Web 服務(wù)器

Go 強(qiáng)大的庫包便于初學(xué)者進(jìn)行 Web 編程。只需幾行代碼,您就可以快速開發(fā)簡單的 Web 服務(wù)器。

此外,這種編程語言強(qiáng)大的測試特性也使得敏捷編程方法的實(shí)現(xiàn)變得容易。這些是一組基于迭代開發(fā)和團(tuán)隊(duì)之間廣泛協(xié)作的軟件開發(fā)策略。

責(zé)任編輯:趙寧寧 來源: Linux迷
相關(guān)推薦

2019-05-08 14:37:49

Web服務(wù)器HTTP

2014-10-15 11:01:02

Web應(yīng)用測試應(yīng)用

2019-09-23 11:46:02

FedoraTFTP服務(wù)器 Linux

2014-04-14 15:54:00

print()Web服務(wù)器

2021-07-02 07:18:19

Goresults通道類型

2023-03-30 13:22:45

nginxweb服務(wù)器

2022-02-22 11:57:32

BOAWeb服務(wù)器

2016-08-10 16:28:00

WebURLHTTP

2024-01-08 08:36:29

HTTPGo代理服務(wù)器

2023-12-11 11:56:24

圖片服務(wù)器Rust

2019-07-05 08:39:39

GoSQL解析器

2017-03-14 09:22:05

2017-04-20 19:15:32

Linux服務(wù)器AWS EC2

2013-03-12 09:50:45

GoRESTful Web

2011-03-21 14:41:04

LAMPapacheweb

2019-08-12 15:44:41

DockerTomcat

2023-10-18 07:52:48

Nginx靜態(tài)資源服務(wù)器

2024-05-24 08:31:49

服務(wù)器聯(lián)網(wǎng)SSH

2024-03-08 12:45:00

C#Web服務(wù)器

2018-02-28 17:05:19

UbuntuGo語言Git
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)