7Days Gee Day1 添加部分注释
parent
44895b8fe9
commit
97774d1cd7
|
@ -1,25 +1,33 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Engine struct{}
|
type Engine struct{}
|
||||||
|
|
||||||
func (engine *Engine) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
func (engine *Engine) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
switch r.URL.Path {
|
path := r.URL.Path
|
||||||
|
switch path {
|
||||||
case "/":
|
case "/":
|
||||||
fmt.Fprintf(w, "URL.Path = %q", r.URL.Path)
|
_, _ = w.Write([]byte("Hello Go"))
|
||||||
case "/hello":
|
case "/gee":
|
||||||
for k, v := range r.Header {
|
_, _ = w.Write([]byte("Gee!!!"))
|
||||||
fmt.Fprintf(w, "Header[%q] = %q", k, v)
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
fmt.Fprintf(w, "404 NOT FOUND: %s", r.URL)
|
_, _ = w.Write([]byte("天啊, 404啦!!!!"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
engine := new(Engine)
|
engine := new(Engine)
|
||||||
http.ListenAndServe(":8000", engine)
|
http.ListenAndServe(":8000", engine)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//// 自定义ServeMux
|
||||||
|
//func main() {
|
||||||
|
// mux := new(http.ServeMux)
|
||||||
|
// mux.HandleFunc("/hello", func(writer http.ResponseWriter, request *http.Request) {
|
||||||
|
// _, _ = writer.Write([]byte("Hello Go"))
|
||||||
|
// })
|
||||||
|
// _ = http.ListenAndServe(":8000", mux)
|
||||||
|
//}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package gee
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -18,12 +19,15 @@ func (engine *Engine) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
// 获取连接的请求方式和路径
|
// 获取连接的请求方式和路径
|
||||||
key := r.Method + "-" + r.URL.Path
|
key := r.Method + "-" + r.URL.Path
|
||||||
// 对比和匹配路由
|
// 对比和匹配路由
|
||||||
if handler, ok := engine.router[key]; ok {
|
handler, ok := engine.router[key]
|
||||||
|
if ok {
|
||||||
handler(w, r)
|
handler(w, r)
|
||||||
} else {
|
} else {
|
||||||
w.WriteHeader(http.StatusNotFound)
|
w.WriteHeader(http.StatusNotFound)
|
||||||
_, _ = fmt.Fprintf(w, "404 NOT FOUND: %s", r.URL)
|
_, _ = fmt.Fprintf(w, "404 NOT FOUND: %s", r.URL)
|
||||||
}
|
}
|
||||||
|
// 这里我们加上时间,容易理解
|
||||||
|
log.Println("请求方式:", r.Method, r.URL.Path, "对应:", key, "是否对应上:", ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run 启动服务
|
// Run 启动服务
|
||||||
|
@ -36,6 +40,8 @@ func (engine *Engine) Run(addr string) (err error) {
|
||||||
func (engine *Engine) addRoute(method string, pattern string, handler HandlerFunc) {
|
func (engine *Engine) addRoute(method string, pattern string, handler HandlerFunc) {
|
||||||
key := method + "-" + pattern
|
key := method + "-" + pattern
|
||||||
engine.router[key] = handler
|
engine.router[key] = handler
|
||||||
|
// 打印对应的 key
|
||||||
|
fmt.Println("请求方式:", method, pattern, " 对应: ", key)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GET 添加GET路由规则
|
// GET 添加GET路由规则
|
||||||
|
|
|
@ -7,19 +7,24 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
// 创建 Engine 实例
|
||||||
r := gee.New()
|
r := gee.New()
|
||||||
|
// 增加一个 GET 路由, path 为 /
|
||||||
r.GET("/", func(w http.ResponseWriter, r *http.Request) {
|
r.GET("/", func(w http.ResponseWriter, r *http.Request) {
|
||||||
_, _ = w.Write([]byte("Hello World"))
|
_, _ = w.Write([]byte("Hello World"))
|
||||||
})
|
})
|
||||||
|
// 增加一个 GET 路由, path 为 /hello
|
||||||
r.GET("/hello", func(w http.ResponseWriter, r *http.Request) {
|
r.GET("/hello", func(w http.ResponseWriter, r *http.Request) {
|
||||||
for k, v := range r.Header {
|
for k, v := range r.Header {
|
||||||
_, _ = fmt.Fprintf(w, "Header[%q] = %q", k, v)
|
_, _ = fmt.Fprintf(w, "Header[%q] = %q", k, v)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
// 增加一个 POST 路由, path 为 /login
|
||||||
r.POST("/login", func(w http.ResponseWriter, r *http.Request) {
|
r.POST("/login", func(w http.ResponseWriter, r *http.Request) {
|
||||||
_, _ = fmt.Fprintf(w, "POST login")
|
_, _ = fmt.Fprintf(w, "POST login")
|
||||||
})
|
})
|
||||||
err := r.Run(":9000")
|
// 创建服务端口的监听并开启 Http 服务
|
||||||
|
err := r.Run(":8000")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue