千家信息网

Go语言HTTPServer开发的有那几种方式

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍"Go语言HTTPServer开发的有那几种方式",在日常操作中,相信很多人在Go语言HTTPServer开发的有那几种方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2026年11月04日Go语言HTTPServer开发的有那几种方式

这篇文章主要介绍"Go语言HTTPServer开发的有那几种方式",在日常操作中,相信很多人在Go语言HTTPServer开发的有那几种方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Go语言HTTPServer开发的有那几种方式"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

第一种

基于net/http实现,这是一种比较基础的,对于接口和handle映射关系处理并不优雅,不推荐使用。

func TestHttpSer(t *testing.T) {  server := http.Server{  Addr: ":8001",  Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {    if strings.Index(r.URL.String(), "test") > 0 {    fmt.Fprintf(w, "这是net/http创建的server第一种方式")    return    }    fmt.Fprintf(w, task.FunTester)    return  }),  }  server.ListenAndServe()  log.Println("开始创建HTTP服务")}

第二种

第二种也是基于net/http,这种编写语法可以很好地解决第一种的问题,handle和path有了类似配置的语法,可读性提高了很多。

type indexHandler struct {  content string}func (ih *indexHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {  fmt.Fprintf(w, ih.content)}func TestHttpSer2(t *testing.T) {  http.Handle("/test", &indexHandler{content: "这是net/http第二种创建服务语法"})  http.Handle("/", &indexHandler{content: task.FunTester})  http.ListenAndServe(":8001", nil)}

第三种

第三个基于net/http和github.com/labstack/echo,后者主要提供了Echo对象用来处理各类配置包括接口和handle映射,功能很丰富,可读性最佳。

func TestHttpSer3(t *testing.T) {  app := echo.New()  app.Use(middleware.CORSWithConfig(middleware.CORSConfig{  AllowOrigins: []string{"*"},  AllowMethods: []string{echo.GET, echo.DELETE, echo.POST, echo.OPTIONS, echo.PUT, echo.HEAD},  AllowHeaders: []string{echo.HeaderContentType, echo.HeaderAuthorization},  }))  app.Group("/test")  {  projectGroup := app.Group("/test")  projectGroup.GET("/", PropertyAddHandler)  }  app.Server.Addr = ":8001"  gracehttp.Serve(app.Server)}

第四种

第四种依然基于net/http实现,引入了github.com/gin-gonic/gin的路由,看起来接口和handle映射关系比较明晰了。

func TestHttpServer4(t *testing.T) {  router := gin.New()  api := router.Group("/okreplay/api")  {  api.POST("/submit", gin.HandlerFunc(func(context *gin.Context) {    context.ShouldBindJSON(map[string]interface{}{    "code": 0,    "msg":  "这是创建HTTPServer第四种方式",    })    context.Status(200)  }))  }  s := &http.Server{  Addr:           ":8001",  Handler:        router,  ReadTimeout:    1000 * time.Second,  WriteTimeout:   1000 * time.Second,  MaxHeaderBytes: 1 << 20,  }  s.ListenAndServe()}

第五种

第五种基于fasthttp开发,使用都是fasthttp提供的API,可读性尚可,handle配置倒是更像Java了。

func TestFastSer(t *testing.T) {  address := ":8001"  handler := func(ctx *fasthttp.RequestCtx) {  path := string(ctx.Path())  switch path {  case "/test":    ctx.SetBody([]byte("这是fasthttp创建服务的第一种语法"))  default:    ctx.SetBody([]byte(task.FunTester))  }  }  s := &fasthttp.Server{  Handler: handler,  Name:    "FunTester server",  }  if err := s.ListenAndServe(address); err != nil {  log.Fatal("error in ListenAndServe", err.Error())  }}

第六种

第六种依然基于fasthttp,用到了github.com/buaazp/fasthttprouter,有点奇怪两个居然不在一个GitHub仓库里。使用语法跟第三种方式有点类似,比较有条理,有利于阅读。

func TestFastSer2(t *testing.T) {  address := ":8001"  router := fasthttprouter.New()  router.GET("/test", func(ctx *fasthttp.RequestCtx) {  ctx.Response.SetBody([]byte("这是fasthttp创建server的第二种语法"))  })  router.GET("/", func(ctx *fasthttp.RequestCtx) {  ctx.Response.SetBody([]byte(task.FunTester))  })  fasthttp.ListenAndServe(address, router.Handler)}

到此,关于"Go语言HTTPServer开发的有那几种方式"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

方式 语法 这是 开发 语言 学习 可读性 接口 服务 配置 更多 问题 处理 帮助 实用 优雅 接下来 三个 两个 仓库 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州万易互联网科技有限公司 互联网医疗科技 互联网 的科技创新 丰台科技园 互联网 时间互联网络科技 狮子座互联网科技培训 隆华科技工业互联网 金融科技与互联网金融相同和不同 互联网科技教育视频 广州恒生互联网科技有限 受益于互联网科技的高速发展 语蝶互联网科技有限公司 宜昌元轩互联网科技有限公司 辽宁互联网新科技 乌苏新华互联网科技做什么的 明优互联网科技有限公司 工业互联网科技成果转化 神州科技互联网有限公司 新氧科技和美国互联网有关系吗 上海互联网科技园景观 互联网下的科技发展 智慧科技互联网 易通互联网络科技有限公司 随着互联网科技发展 崇明区互联网教育科技售后服务 电子科技大学互联网创业大赛 佛山市拉法互联网科技有限公司 黑云互联网科技有限公司 扫呗互联网科技有限公司 数字科技和互联网金融哪个好
0