Go Web 实战之HTTP的封装 - Go语言中文社区

Go Web 实战之HTTP的封装


Go web

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

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

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


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

 go get github.com/astaxie/beego

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

package main

import (
	"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 main

import (
	"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 main

import (
	"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())
}


版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Ghost_leader/article/details/78151974
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-13 12:12:52
  • 阅读 ( 1813 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢