iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Go语言HTTPServer开发的有那几种方式
  • 615
分享到

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

2023-06-25 12:06:51 615人浏览 薄情痞子
摘要

这篇文章主要介绍“Go语言httpserver开发的有那几种方式”,在日常操作中,相信很多人在Go语言HttpServer开发的有那几种方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言HTTPSer

这篇文章主要介绍“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开发的有那几种方式”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Go语言HTTPServer开发的有那几种方式

本文链接: https://www.lsjlt.com/news/304725.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go语言HTTPServer开发的有那几种方式
    这篇文章主要介绍“Go语言HTTPServer开发的有那几种方式”,在日常操作中,相信很多人在Go语言HTTPServer开发的有那几种方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言HTTPSer...
    99+
    2023-06-25
  • Go语言HTTPServer开发的六种方式小结
    目录第一种 第二种 第三种 第四种 第五种 第六种 学完了​​net/http​​和​​fasthttp...
    99+
    2024-04-02
  • go语言结构体赋值的方式有哪几种
    在Go语言中,结构体赋值的方式有以下几种: 直接赋值:可以直接通过"."操作符给结构体的字段赋值。 type...
    99+
    2024-02-29
    go语言
  • go语言抽象方法有哪几种
    go语言抽象方法包括接口、函数类型和类型组合,详细介绍几种方法:1、接口实现抽象方法,接口是一种将方法声明集合在一起的方式,通过接口可以定义出一组相关的方法;2、函数类型实现抽象方法,函数类型是一种特殊的类型,可以将函数当作值进行传递和赋值...
    99+
    2023-07-13
  • Android App开发方式有哪几种
    Android App的开发方式有以下几种: Native开发:使用Java或Kotlin编写代码,并使用Android SDK...
    99+
    2024-02-29
    Android
  • JavaScript调用C语言的几种方式
    目录一、使用WebAssembly可以在JavaScript中调用C语言接口二、使用node-ffi和node-ffi-napi等第三方库可以在Node.js中调用C语言库JavaS...
    99+
    2023-02-17
    JavaScript调用C语言
  • go语言中for有哪几种写法
    这篇“go语言中for有哪几种写法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言中for有哪几种写法”文章吧。Go ...
    99+
    2023-07-05
  • c语言定义字符串的方式有哪几种
    在C语言中,定义字符串的方式有以下几种: 使用字符数组:可以通过定义一个字符数组来存储字符串,例如:char str[] = “...
    99+
    2024-03-06
    c语言
  • c语言字符串处理的方式有哪几种
    在C语言中,字符串处理可以通过以下几种方式实现: 使用字符数组:在C语言中,字符串通常被表示为字符数组,使用字符数组来存储和处理...
    99+
    2024-04-02
  • c语言数组初始化的方式有哪几种
    在C语言中,数组的初始化方式有以下几种:1. 声明时指定元素的初始值:```cint arr[] = {1, 2, 3, 4, 5}...
    99+
    2023-09-20
    c语言
  • 想知道有那几种最佳人工智能开发语言吗?大概就是这些了
    您应该为您的机器学习或深度学习项目选择哪种编程语言这些是你最好的选择前言你应该学习哪种编程语言来探究人工智能的深度?当然,你会想要一种有很多好的机器学习和深度学习库的语言。它还应该具有良好的运行时性能、良好的工具支持、庞大的程序员社区和健康...
    99+
    2023-06-02
  • c语言定义二维数组的方式有哪几种
    在C语言中,定义二维数组的方式有以下几种: 使用静态数组:通过在定义数组时指定固定的行数和列数来创建二维数组。例如: int a...
    99+
    2024-03-12
    c语言
  • C语言求素数的几种方式总结
    目录一、判断n是否能被2~n-1整除方法一方法二二、判断n是否能被2~√n间的整数整除方法一方法二总结一、判断n是否能被2~n-1整除 输入的数n不能被2-(n-1)整除...
    99+
    2022-12-27
    C语言求素数 C语言素数 C语言求素数方式
  • css3过渡有几种触发方式
    这篇文章将为大家详细讲解有关css3过渡有几种触发方式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 css3过渡有2种触发方式:1、通过伪类...
    99+
    2024-04-02
  • c语言函数参数传递方式有哪几种
    C语言函数参数传递方式有以下几种:1. 值传递(Pass by Value):将实际参数的值复制给形式参数,在函数内部对形参的修改不...
    99+
    2023-09-16
    c语言
  • Go 语言的 Shell 容器:一种新的并发编程方式?
    随着技术的进步和发展,人们对于编程语言的要求也越来越高。在这样的背景下,Go 语言应运而生。Go 语言是一种并发编程语言,它拥有更高的并发性能和更低的内存占用,可以满足现代应用开发的需求。在这篇文章中,我们将探讨一种新的并发编程方式:使用...
    99+
    2023-07-28
    shell 容器 并发
  • Go语言读取文件的四种方式
    目录前言整个文件读取按行读取逐个单词读取以数据块的形式读取文件二进制读取总结前言 这篇文章将讨论如何在 Golang 中读取文件。我们将使用以下包来处理这些文件。 os 包提供了一个...
    99+
    2023-05-15
    Go 读取文件
  • Web开发应的设计模式有哪些几种
    这篇文章主要讲解了“Web开发应的设计模式有哪些几种”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Web开发应的设计模式有哪些几种”吧!什么是设计模式设计模...
    99+
    2024-04-02
  • Go语言开发利器:发掘那些提供可调用库的项目
    go 语言生态系统中提供可调用库的项目,提升开发效率。这些项目包括:gorilla mux:创建 restful api 的高效路由器。negroni:处理 http 请求的中间件框架。...
    99+
    2024-04-03
    go语言 开发利器 golang
  • go语言开发的应用有哪些
    go语言开发的应用有Web开发、系统工具开发、分布式系统开发、数据库开发、容器编排工具开发以及云原生应用开发等。详细介绍:1、Web开发,Go语言的标准库中包含了HTTP、HTML、XML等相关的库,使得开发Web应用程序更加简单和高效,常...
    99+
    2023-08-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作