Golang搭建HTTP服务
来源:互联网 发布:网络直播平台分红 编辑:程序博客网 时间:2024/05/29 13:13
http://www.jianshu.com/p/be3d9cdc680b
人世间-小哥力作,思路清晰,讲的较全面。
简单概括:
构建HTTP服务分为两步
1.注册路由
2.实例化server并监听客户端请求
1.注册路由
注册路由可以使用DafaultServeMux,同样可以创建一个新的ServerMux。
(1) 使用DefaultServeMUX
这种方式直接调用Http.HandleFunc(pattern,handler)即可,因为HandleFunc内部通过DafaultServeMux调用serverMux的HandleFunc进行了路由注册。
(2) 使用自定义的ServeMUX
首先需要使用http.NewServeMux()创建一个ServeMux,然后利用该ServeMux进行路由注册。-1) mux.HandleFunc()//将一个handle函数转变为handle转变为handle处理器-2) mux.handle()//将一个handle对象转变为一个handle处理器
在(1) (2)中其实都用到了mux的HandleFunc方法,只是一个是DafaultServeMux,另一个是自定义的ServeMux。
func (mux *ServeMux) HandleFunc(pattern string, handler func(ResponseWriter, *Request)) { mux.Handle(pattern, HandlerFunc(handler))}
在HandleFunc函数内部的HandlerFunc是一个函数类型,同时他实现了Handle接口,所以调用mux.HandleFunc会将一个Handle函数变成一个Handle处理器。
2.监听处理
当有请求来临时,DafaultServeMux或者自定义的mux会在其内部的路由表内找到对应的路由处理器并进行生成相响应和回复功能。
如果路由较多,可以通过使用一个中间件进行一些相关内容的处理,比如错误接收,时间的打印等等。这样可以有效的减少代码的冗余。
func safeHandler(fn http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { defer func() { if e, ok := recover().(error); ok { http.Error(w, e.Error(), http.StatusInternalServerError) fmt.Println("err") } }() fn(w, r) }}
阅读全文
0 0
- Golang搭建HTTP服务
- 使用Golang 搭建http web服务器
- 使用Golang 搭建http web服务器
- 使用Golang 搭建http web服务器
- 使用golang 搭建http web服务器
- 搭建Python HTTP服务
- http服务搭建
- Python搭建HTTP服务
- linux-http服务搭建
- nginx http服务搭建配置
- python快速搭建http服务
- Servlet+Tomcat搭建Http服务
- 基于Golang的http、web服务框架(SSSS)
- golang 带托盘的 http server启动关闭服务
- http服务-搭建简易的http服务器
- golang起一个http服务,mac交叉编译并在linux上起服务
- 用wampserver搭建HTTP服务(Apache)
- Nodejs搭建基本的http服务
- OkHttp Demo
- linux命令行下命令参数前的一横(-)和两横(--)的区别
- 两种图像骨架提取算法的研究(1)原理部分
- 1:Two Sum(非最优解)
- Maven项目报错javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;解
- Golang搭建HTTP服务
- Vue2.0-中篇
- [Kotlin]Kotlin学习笔记(二):Kotlin中流程控制语句的学习(条件、跳转、循环)
- 细数STM32开发板有哪些,官方板/正点原子/野火/安富莱等
- BufferedImage对象使用
- Android实现APP欢迎页面
- Android中生成json格式数据的几种方法
- 最大流基础(网络流基础概念+三个算法)
- 剑指offer--从尾到头打印链表