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

Go語言Http?Server框架實(shí)現(xiàn)一個(gè)簡(jiǎn)單的httpServer

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

實(shí)現(xiàn)一個(gè)簡(jiǎn)單地httpServer

上一篇文章對(duì)http庫的基本使用做了說明,下面來實(shí)現(xiàn)一個(gè)簡(jiǎ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))  
}

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

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

首先我們來寫一個(gè)接口

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

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

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

實(shí)現(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)可以同時(shí)監(jiān)聽多個(gè)端口了

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

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

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

以上就是Go語言Http Server框架實(shí)現(xiàn)一個(gè)簡(jiǎn)單的httpServer的詳細(xì)內(nèi)容,更多關(guān)于Go Http Server框架的資料請(qǐng)關(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項(xiàng)目三種開發(fā)模式方式

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

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

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

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

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

    對(duì)于線上穩(wěn)定運(yùn)行的服務(wù)來說,?可能會(huì)遇到?cpu、mem?利用率升高的問題,那我們就需要使用?pprof?工具來進(jìn)行性能分析,所以本文就來和大家講講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ì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Go項(xiàng)目實(shí)現(xiàn)優(yōu)雅關(guān)機(jī)與平滑重啟功能

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

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

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

    這篇文章主要為大家介紹了詳解如何在Go中循環(huán)中使用Defer關(guān)鍵字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jì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ù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • golang如何部署到服務(wù)器及應(yīng)注意問題解析

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

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

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

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

最新評(píng)論