91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言怎么實現一個Http?Server

發布時間:2023-04-28 10:58:20 來源:億速云 閱讀:95 作者:iii 欄目:開發技術

這篇文章主要介紹“Go語言怎么實現一個Http Server”,在日常操作中,相信很多人在Go語言怎么實現一個Http Server問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Go語言怎么實現一個Http Server”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

實現一個簡單地httpServer

package main  
  
import (  
    "fmt"  
    "log"  
    "net/http"  
)  
  
func home(w http.ResponseWriter, r *http.Request) {  
    fmt.Fprintf(w, "這是主頁")  
}  
  
func user(w http.ResponseWriter, r *http.Request) {  
    fmt.Fprintf(w, "這是用戶頁面")  
}  
  
func main() {  
    http.HandleFunc("/", home)  
    http.HandleFunc("/user", user)  
    log.Fatal(http.ListenAndServe(":8080", nil))  
}

此時啟動服務并訪問8080端口,可以看到下面的頁面

Go語言怎么實現一個Http?Server

但是如果我想同時啟動多個server監聽不同的端口該怎么辦? 我們可以從邏輯上抽象出一個Server,可以表示對某個端口進行監聽的實體,這樣必要的時候,我們就可以啟動多個Server來監聽不同的端口

首先我們來寫一個接口

type Server interface{
    //Route 設定一個路由,命中路由會執行handlerFunc的代碼
    Route(pattern string handlerFunc http.HandlerFunc)
    //Start 用于啟動服務
    Start(address string) error
}

實現Server接口

func (s *sdkHttpServer) Route(pattern string,handlerFunc http.HandlerFunc){
    http.HandleFunc(pattern,handlerFunc)
}

func (s *sdkHttpServer) Start(address string) error{
    http.ListenAndServer(address,nil)
}

func NewSdkHttpServer(name string) Server {
    return &sdkHttpServer{
        Name:name,
    }
}

現在我們已經可以同時監聽多個端口了

func main(){
    server := web.NewSdkHttpServer("my-test-server")
    
    server.Route("/",home)
    server.Route("/user",user)
    
    server.Start("8080")
}

雖然我們已經對Server進行了抽象,但是在請求處理的過程中仍然存在問題,就比如我們要實現一個用戶注冊的接口

Go語言怎么實現一個Http?Server

所以我們需要繼續對Context也就是上下文做一下抽象,這里的Context是我們自定義的Context不是go原生的Context

到此,關于“Go語言怎么實現一個Http Server”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

双鸭山市| 措勤县| 嘉荫县| 永泰县| 万荣县| 沙湾县| 达尔| 恩平市| 方城县| 沁阳市| 湖南省| 苏尼特右旗| 建平县| 嘉峪关市| 阳春市| 白山市| 南丹县| 稷山县| 沈丘县| 皮山县| 呼和浩特市| 怀集县| 蓝山县| 柘城县| 常宁市| 浠水县| 利川市| 萝北县| 嘉荫县| 都兰县| 宁强县| 绍兴县| 陵川县| 雷山县| 安阳市| 芷江| 龙山县| 长白| 牡丹江市| 新野县| 军事|