最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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))  
}

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

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

首先我們來寫一個接口

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

基于http庫實現(xiàn)一個結構體

type sdkHttpSetver struct{
    //Name sever的名字,用于標記特定的服務
    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)在我們已經可以同時監(jiān)聽多個端口了

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

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

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

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

相關文章

  • Golang實現(xiàn)自定義時間結構體并支持Json&Gorm

    Golang實現(xiàn)自定義時間結構體并支持Json&Gorm

    因為時區(qū)等問題,很多項目需要自定義時區(qū)和時間格式,所以這篇文章主要為大家介紹了Golang如何實現(xiàn)自定義時間結構體并支持Json&Gorm,希望對大家有所幫助
    2024-03-03
  • Go語言文件操作的方法

    Go語言文件操作的方法

    這篇文章主要介紹了Go語言文件操作的方法,涉及文件的讀寫及關閉等操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • Go生成base64圖片驗證碼實例(超詳細工具類)

    Go生成base64圖片驗證碼實例(超詳細工具類)

    這段時間需要使用圖片驗證碼庫,下面這篇文章主要給大家介紹了關于Go生成base64圖片驗證碼的相關資料,文中給出了詳細的實例代碼,需要的朋友可以參考下
    2023-06-06
  • 使用go自定義prometheus的exporter

    使用go自定義prometheus的exporter

    在prometheus中如果要監(jiān)控服務器和應用的各種指標,需要用各種各樣的exporter服務,這篇文章主要介紹了使用go自定義prometheus的exporter,需要的朋友可以參考下
    2023-03-03
  • Golang輕量級IoC容器安裝使用示例

    Golang輕量級IoC容器安裝使用示例

    這篇文章主要為大家介紹了Golang輕量級IoC容器安裝使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • VsCode搭建Go語言開發(fā)環(huán)境的配置教程

    VsCode搭建Go語言開發(fā)環(huán)境的配置教程

    這篇文章主要介紹了在VsCode中搭建Go開發(fā)環(huán)境的配置教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • go?zero微服務實戰(zhàn)系服務拆分

    go?zero微服務實戰(zhàn)系服務拆分

    這篇文章主要為大家介紹了go?zero微服務實戰(zhàn)系服務拆分的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • VSCode1.4 搭建Golang的開發(fā)調試環(huán)境(遇到很多問題)

    VSCode1.4 搭建Golang的開發(fā)調試環(huán)境(遇到很多問題)

    這篇文章主要介紹了VSCode1.4 搭建Golang的開發(fā)調試環(huán)境(遇到很多問題),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • Golang 處理浮點數(shù)遇到的精度問題(使用decimal)

    Golang 處理浮點數(shù)遇到的精度問題(使用decimal)

    本文主要介紹了Golang 處理浮點數(shù)遇到的精度問題,不使用decimal會出大問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 利用rpm打包上線部署golang代碼的方法教程

    利用rpm打包上線部署golang代碼的方法教程

    RPM是RPM Package Manager(RPM軟件包管理器)的縮寫,這篇文章主要給大家介紹了關于利用rpm打包上線部署golang代碼的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01

最新評論

新乡县| 石阡县| 周至县| 濉溪县| 肥东县| 涡阳县| 余姚市| 阿拉尔市| 绍兴市| 舒城县| 永清县| 石门县| 横峰县| 明水县| 射洪县| 平度市| 宁阳县| 嘉黎县| 绍兴县| 阳信县| 甘泉县| 克什克腾旗| 安平县| 滨州市| 绩溪县| 姜堰市| 武宁县| 溆浦县| 安庆市| 昔阳县| 思茅市| 二连浩特市| 自贡市| 射洪县| 资溪县| 如东县| 进贤县| 浮山县| 纳雍县| 卢湾区| 武定县|