欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言Http?Server框架實現(xiàn)一個簡單的httpServer

 更新時間:2023年04月28日 09:47:37   作者:upper  
這篇文章主要為大家介紹了Go語言Http?Server框架實現(xiàn)一個簡單的httpServer抽象,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

實現(xiàn)一個簡單地httpServer

上一篇文章對http庫的基本使用做了說明,下面來實現(xiàn)一個簡單地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))  
}

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

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

首先我們來寫一個接口

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

基于http庫實現(xiàn)一個結(jié)構(gòu)體

type sdkHttpSetver struct{
    //Name sever的名字,用于標(biāo)記特定的服務(wù)
    Name string
}

實現(xiàn)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,
    }
}

現(xiàn)在我們已經(jīng)可以同時監(jiān)聽多個端口了

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

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

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

以上就是Go語言Http Server框架實現(xiàn)一個簡單的httpServer的詳細(xì)內(nèi)容,更多關(guān)于Go Http Server框架的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解golang碎片整理之 fmt.Scan

    詳解golang碎片整理之 fmt.Scan

    本文介紹了從golang語言中fmt包從標(biāo)準(zhǔn)輸入獲取數(shù)據(jù)的Scan系列函數(shù)、從io.Reader中獲取數(shù)據(jù)的Fscan系列函數(shù)以及從字符串中獲取數(shù)據(jù)的Sscan系列函數(shù)的用法,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 用gin開發(fā)的golang項目三種開發(fā)模式方式

    用gin開發(fā)的golang項目三種開發(fā)模式方式

    這篇文章主要介紹了用gin開發(fā)的golang項目三種開發(fā)模式方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • golang 微服務(wù)之gRPC與Protobuf的使用

    golang 微服務(wù)之gRPC與Protobuf的使用

    這篇文章主要介紹了golang 微服務(wù)之gRPC與Protobuf的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 聊聊Golang性能分析工具pprof的使用

    聊聊Golang性能分析工具pprof的使用

    對于線上穩(wěn)定運行的服務(wù)來說,?可能會遇到?cpu、mem?利用率升高的問題,那我們就需要使用?pprof?工具來進行性能分析,所以本文就來和大家講講pprof的具體使用吧
    2023-05-05
  • 關(guān)于Golang中range指針數(shù)據(jù)的坑詳解

    關(guān)于Golang中range指針數(shù)據(jù)的坑詳解

    這篇文章主要給大家介紹了關(guān)于Golang中range指針數(shù)據(jù)的坑的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Go項目實現(xiàn)優(yōu)雅關(guān)機與平滑重啟功能

    Go項目實現(xiàn)優(yōu)雅關(guān)機與平滑重啟功能

    無論是優(yōu)雅關(guān)機還是優(yōu)雅重啟歸根結(jié)底都是通過監(jiān)聽特定系統(tǒng)信號,然后執(zhí)行一定的邏輯處理保障當(dāng)前系統(tǒng)正在處理的請求被正常處理后再關(guān)閉當(dāng)前進程,這篇文章主要介紹了Go實現(xiàn)優(yōu)雅關(guān)機與平滑重啟 ,需要的朋友可以參考下
    2022-10-10
  • 詳解如何在Go中循環(huán)中使用Defer關(guān)鍵字示例詳解

    詳解如何在Go中循環(huán)中使用Defer關(guān)鍵字示例詳解

    這篇文章主要為大家介紹了詳解如何在Go中循環(huán)中使用Defer關(guān)鍵字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • go如何優(yōu)雅關(guān)閉Graceful?Shutdown服務(wù)

    go如何優(yōu)雅關(guān)閉Graceful?Shutdown服務(wù)

    這篇文章主要為大家介紹了go優(yōu)雅關(guān)閉Graceful?Shutdown服務(wù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • golang如何部署到服務(wù)器及應(yīng)注意問題解析

    golang如何部署到服務(wù)器及應(yīng)注意問題解析

    這篇文章主要為大家介紹了golang如何部署到服務(wù)器及應(yīng)注意問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Go語言實現(xiàn)二進制與十進制互轉(zhuǎn)的示例代碼

    Go語言實現(xiàn)二進制與十進制互轉(zhuǎn)的示例代碼

    這篇文章主要和大家詳細(xì)介紹了Go語言中實現(xiàn)二進制與十進制互相轉(zhuǎn)換的示例代碼,文中的代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-05-05

最新評論