通过http请求go语言的简单介绍

Go语言HTTPServer开发的六种实现

学完了 net/http 和 fasthttp 两个HTTP协议接口的客户端实现,接下来就要开始Server的开发,不学不知道一学吓一跳,居然这两个库还支持Server的开发,太方便了。

昌图网站建设公司创新互联,昌图网站设计制作,有大型网站制作公司丰富经验。已为昌图1000多家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的昌图做网站的公司定做!

相比于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仓库里。使用语法跟第三种方式有点类似,比较有条理,有利于阅读。

如何实现Golang的http请求处理中间件

优雅的Golang Web开发框架:Martini

Martini 是一个非常新的 Go 语言的 Web 框架,使用 Go 的 net/http 借口开发,类似 Sinatra 或者 Flask 之类的框架,你可使用自己的 DB 层、会话管理和模板。

特性:

使用非常简单

无侵入设计

可与其他 Go 的包配合工作

超棒的路径匹配和路由

模块化设计,可轻松添加工具

大量很好的处理器和中间件

很棒的开箱即用特性

完全兼容 http.HandlerFunc 接口.

示例代码:

01 package main

02

03 import "github.com/codegangsta/martini"

04

05 func main() {

06 m := martini.Classic()

07 m.Get("/", func() string {

08 return "Hello world!"

09 })

10 m.Run()

11 }

请求处理器:

查看源码打印?

1 m.Get("/", func() {

2 println("hello world")

3 })

4

5 m.Get("/", func(res http.ResponseWriter, req *http.Request) { // res and req are injected by Martini

6 res.WriteHeader(200) // HTTP 200

7 })

本回答由提问者推荐

go语言聊天室实现(六)创建HTTP连接,并升级为长连接

我们在mian函数中,首先初始化配置文件,然后新建http连接。

这个连接创建之后,监听服务器的9999端口。如果url的路径后缀为 "/ws",就转发到ws/ws.go中的IndexHandler方法中。

这个方法中首先我们创建一个websocket的Upgrader实例,然后我们使用Upgrader的upgrade方法来升级一下我们的连接为长连接。

升级完成之后会返回一个*websocket.Conn的连接,我们之后所有的关于连接的操作,都是基于该conn的。

在该连接完成之后,我们将连接存放到一个名为Client的map中,以便之后管理更为方便。

之后,我们启动一个goroutine来读取连接中发送的信息内容,再根据内容进行相应的操作。

【golang】context上下文与http请求妙用

1.在后端服务开发中,如过一个HTTP请求,请求一致占用,将会带来大的性能影响,所以需要为每个请求加上超时设置

2.在go语言中利用 context 进行上下文控制,要想达到精确时间控制,如下:

3.同时我们也可以利用context的context.WithDeadline()函数来进行超时控制


文章名称:通过http请求go语言的简单介绍
当前路径:http://scyanting.com/article/doochih.html