github仓库
github地址:ameamezhou/golang-web-frame
后续还将继续学习更新
创建github仓库
设置免密登录
ssh-keygen 一路回车就OK 上面有告诉你密钥生成地址
红框为需要上传的公钥
web框架学习
首先明确目标–我们学习开发web框架的目的是 :
在日常的web开发中,我们经常要使用到web框架,python就有很多好用的框架,比如flask和django,前者小巧精美,后者厚重却有着齐全的功能,不同开发者在设计框架的时候会有他们不同的看法和理念,因此在不同框架之间就会有许多不同的区别。这对于Go语言来说也是一样的,我们看到有很多好用的框架,例如Beego,Gin等等。但是我们在用这些框架的时候,我们可能需要去思考一下,其实这些框架翻找源码到底其实都是http等基础库构成的,但是我们为什么要使用它们呢?我们用框架究竟目的是什么?只有我们想明白了这一点我们才能更好的去做我们的开发工作,因此我决定做一个简单的框架实现这些基础功能。
开发周期
第一阶段–了解
package main
import (
"net/http"
)
func main() {
http.HandleFunc("/", sayHello)
http.ListenAndServe("localhost:9999", nil)
}
// 最基础的功能展示, 这里函数携带的参数是根据http库里面定义的
func sayHello(w http.ResponseWriter, r *http.Request){
w.Write([]byte("hello world"))
}
实现一个最简单的web功能,就是打开页面输出 hello world 这里其实可以看到所需代码量其实和用现存的 gin 或者 beego 框架差不多,这里也能看出一些web框架大概的逻辑
然后我们在里面加点功能,增加点json输出
package main
import (
"encoding/json"
"net/http"
)
func main() {
http.HandleFunc("/", sayHello)
http.ListenAndServe("localhost:9999", nil)
}
// 最基础的功能展示, 这里函数携带的参数是根据http库里面定义的
func sayHello(w http.ResponseWriter, r *http.Request){
// 在页面输出展示json
obj := make(map[string]interface{
}, 0)
obj["username"] = "xiawuyue"
obj["password"] = "xiaoqizhou"
// 这里是设置response 的响应头
w.Header().Set("Content-Type", "application/json")
// 这里是设置响应头的状态码 ok 就是 200
w.WriteHeader(http.StatusOK)
encoder := json.NewEncoder(w)
if err := encoder.Encode(obj); err != nil {
http.Error(w