1.http服务简单简介
-
http服务是建立在tcp/ip之上的,底层是通过socket实现http协议处理的。
-
写过java服务端的时候,我们知道通过实现HttpServlet抽象类可以进行业务处理了,然后借助服务器容器tomcat,weblogic等实现服务的,springboot自带有容器jar可以做到命令行启动服务。这些都是借助第三方的jar实现的。
-
go的标准库是自带http服务器实现的,其中定义了接口和启动类的,当然它的功能比不了spring的例如spring对数据库事务的控制、依赖注入IOC和切面AOp这些,理解的时候可以对标HttpServlet。
go的web接口
只要实现了这个接口方法,都可以用来处理请求
type Handler interface {
ServeHTTP(ResponseWriter, *Request)
}
服务的启动
func ListenAndServe(addr string, handler Handler) error
2.go中http路由服务快速实现demo
1.直接实现方法
func helloFunc(w http.ResponseWriter, r *http.Request){
log.Printf("Hello HandleFunc")
w.Write([]byte(string("Hello HandleFunc")))
}
2.实现接口
type helloHandler struct {
str string
}
func (th *helloHandler)ServeHTTP(w http.ResponseWriter, r *http.Request){
log.Printf("Hello Handle")
w.Write([]byte(string("Hello Handle")))
}
//处理路由映射
http.Handle("/helloHandler", &helloHandler{"Hi"})
http.HandleFunc("/hellwFunc", helloFunc)
http.ListenAndServe("127.0.0.1:8088",nil)}
上面介绍的这些基础都是需要我们了解的,当然在项目开发中我们用到的都是经过封装易于开发的框架。
java实现一个简单web工具
- 实现过程大概是提取注解路由,当然当时也没实现通配符,占位符这种
- 映射路由和处理方法映射,当调用的时候会用到一些反射和简单IOC的一些东西
- 数据库事务控制是通过代理实现的。
- 工具加载控制入口是通过指定的filter实现的
- 扩展没实现
7天用Go从零实现Web框架Gee教程
- 先实现了路由的控制,通过字典树实现的并且还简单实现了占位符和通配符
- 也是映射路径和处理函数
- 实现了中间件的扩展,里面是通过一个数组进行链式调用的
- 模板都是有实现的,这里简单的说下静态的资源文件例如js,css浏览器会主动请求加载的(servlet实现的有,go需要路径特殊处理
- 错误恢复,这里面是go和java是有区别的,java就是异常捕获处理,go不处理是宕机的
- java在处理前会有个过滤器,这里暂且还没看到
- 数据库管理没实现
- 依赖注入这里暂且也没看到,因为学go时间不久还需要后续了解
学到的点
- 路由控制
- 中间件扩展
欢迎关注公众号:冒泡的肥皂