Go语言HTTPServer开发的六种实现学完了 net/http 和 fasthttp 两个HTTP协议接口的客户端实现,接下来就要开始Server的开发 , 不学不知道一学吓一跳 , 居然这两个库还支持Server的开发,太方便了 。
相比于Java的HTTPServer开发基本上都是使用Spring或者Springboot框架 , 总是要配置各种配置类,各种 handle 对象 。Golang的Server开发显得非常简单,就是因为特别简单 , 或者说没有形成特别统一的规范或者框架,我发现了很多实现方式,HTTP协议基于还是 net/http 和 fasthttp,但是 handle 语法就多种多样了 。
先复习一下: Golang语言HTTP客户端实践 、 Golang fasthttp实践。
在Golang语言方面,实现某个功能的库可能会比较多,有机会还是要多跟同行交流,指不定就发现了更好用的库 。下面我分享我学到的六种Server开发的实现Demo 。
基于 net/http 实现 , 这是一种比较基础的,对于接口和 handle 映射关系处理并不优雅 , 不推荐使用 。
第二种也是基于 net/http , 这种编写语法可以很好地解决第一种的问题,handle和path有了类似配置的语法,可读性提高了很多 。
第三个基于 net/http 和 github.com/labstack/echo,后者主要提供了 Echo 对象用来处理各类配置包括接口和handle映射 , 功能很丰富,可读性最佳 。
第四种依然基于 net/http 实现,引入了 github.com/gin-gonic/gin 的路由 , 看起来接口和 handle 映射关系比较明晰了 。
第五种基于 fasthttp 开发,使用都是 fasthttp 提供的API,可读性尚可,handle配置倒是更像Java了 。
第六种依然基于 fasthttp , 用到了 github.com/buaazp/fasthttprouter ,有点奇怪两个居然不在一个GitHub仓库里 。使用语法跟第三种方式有点类似,比较有条理,有利于阅读 。
GO语言(十三):使用 Go 和 Gin 开发 RESTful API(下)当客户端在 发出POST请求时/albumsgo语言路由,您希望将请求正文中描述的专辑添加到现有专辑数据中 。
为此,您将编写以下内容go语言路由:
1、编写代码
a.添加代码以将专辑数据添加到专辑列表 。
在此代码中go语言路由:
1)用于Context.BindJSON 将请求正文绑定到newAlbum 。
2) album将从 JSON 初始化的结构附加到albums 切片 。
3)向响应添加201状态代码,以及表示您添加的专辑的 JSON 。
b.更改您的main函数,使其包含该router.POST函数,如下所示 。
在此代码中:
1)将路径中的POST方法与 /albumspostAlbums函数相关联 。
使用 Gin,您可以将处理程序与 HTTP 方法和路径组合相关联 。这样,您可以根据客户端使用的方法将发送到单个路径的请求单独路由 。
a.如果服务器从上一节开始仍在运行,请停止它 。
b.从包含 main.go 的目录中的命令行,运行代码 。
c.从不同的命令行窗口,用于curl向正在运行的 Web 服务发出请求 。
该命令应显示添加专辑的标题和 JSON 。
d.与上一节一样,使用curl检索完整的专辑列表,您可以使用它来确认添加go语言路由了新专辑 。
该命令应显示专辑列表 。
当客户端向 发出请求时GET /albums/[id],您希望返回 ID 与id路径参数匹配的专辑 。
为此 , 您将:
a.在您在上一节中添加的函数下方postAlbums,粘贴以下代码以检索特定专辑 。
此getAlbumByID函数将提取请求路径中的 ID,然后找到匹配的专辑 。
在此代码中:
(1)Context.Param用于从 URL 中检索id路径参数 。当您将此处理程序映射到路径时,您将在路径中包含参数的占位符 。
推荐阅读
- 新媒体如何服务顾客,企业怎样在新媒体营销活动中更好的维系客户关系
- 虚拟机下载小米应用打不开,虚拟机下载的软件打不开
- f420怎么连接路由器,fr48路由器怎么设置
- mysqlip怎么设置 设置mysql的sqlmode
- postgresql字段name的简单介绍
- 鸿蒙系统桌面排版图片素材,鸿蒙系统桌面排版图片素材怎么设置
- vb.net如何开启线程 vb创建线程的实例
- 网站推广公司如何布局业务,网站推广企业
- 少女养成ARPG战斗游戏,少女养成类游戏 单机