Go Web 实战之HTTP的封装

来源:互联网 发布:清华大学化学系 知乎 编辑:程序博客网 时间:2024/03/28 23:04

Go web

      从今天起 ,本菜准备跟着无闻学习一下Beego服务。Beego还是比较好的一个web框架。其实很多东西都可以照着官网去学习。

    学习的友情链接: beego官网  https://beego.me

                                                  其他GO文档查询网站   https://gowalker.org


按照官网,首先实现一个最最简单的HTTP服务器

 go get github.com/astaxie/beego

好了,接着。创建一个main.go (其实更详细的过程可以参见beego官网)

package mainimport ("github.com/astaxie/beego")type HomeController struct {beego.Controller}func (self *HomeController) Get() {self.Ctx.WriteString("Hello,World !! ")}func main() {beego.Router("/",&HomeController{})beego.Run()}

    这段代码十分的简单。初始化一个Controller,重载一下Get方法。Get方法呢,就去写进去一个字符串。而main函数是注册一个路由。将对 "/" 的访问,全部去导入到 HomeController 中,再beego.Run()

看看这个被重载的beego.controller



下面具体来介绍http服务器的底层实现。

version1

package mainimport ("io""log""net/http")func main() {//设置路由http.HandleFunc("/",handler)err:=http.ListenAndServe(":80",nil)if err!=nil{log.Fatal(err)}}func handler(w http.ResponseWriter,r *http.Request){io.WriteString(w,"Hello world,this is version 1")}

Version2

package mainimport ("io""log""net/http")func main() {mux := http.NewServeMux()mux.Handle("/",&myHandler{})err:=http.ListenAndServe(":80",mux)if err != nil {log.Fatal(err)}}type myHandler struct {}func (*myHandler) ServeHTTP(w http.ResponseWriter,r *http.Request){io.WriteString(w,"URL:"+r.URL.String())}


阅读全文
0 0
原创粉丝点击