httpserver实现简单的上下文
Posted sunlong88
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了httpserver实现简单的上下文相关的知识,希望对你有一定的参考价值。
package main import ( "net/http" "com.jtthink.net/myhttpserver/core" ) type MyHandler struct func(*MyHandler) ServeHTTP(writer http.ResponseWriter, request *http.Request) writer.Write([]byte("hello,myhandler")) func main() router:=core.DefaultRouter() router.Get("/", func(ctx *core.MyContext) ctx.WriteString("my string GET") ) router.Post("/", func(ctx *core.MyContext) ctx.WriteString("my string POST") ) http.ListenAndServe(":8099",router)
package core import ( "net/http" ) type MyHandlerFunc func(ctx *MyContext) type MyRouter struct Mapping map[string]map[string]MyHandlerFunc Ctx *MyContext func DefaultRouter() *MyRouter return &MyRoutermake(map[string]map[string]MyHandlerFunc),&MyContext func(this *MyRouter) Get(path string,f MyHandlerFunc) if this.Mapping["GET"]==nil this.Mapping["GET"]=make(map[string]MyHandlerFunc) this.Mapping["GET"][path]=f func(this *MyRouter) Post(path string,f MyHandlerFunc) if this.Mapping["POST"]==nil this.Mapping["POST"]=make(map[string]MyHandlerFunc) this.Mapping["POST"][path]=f func(this *MyRouter) ServeHTTP(writer http.ResponseWriter, request *http.Request) this.Ctx.request=request this.Ctx.ResponseWriter=writer //chrome 会默认请求图标地址 if f,OK:=this.Mapping[request.Method][request.URL.Path];OK f(this.Ctx)
package core import "net/http" type MyContext struct //上下文对象 request *http.Request http.ResponseWriter func(this *MyContext) WriteString(str string) this.Write([]byte(str))
以上是关于httpserver实现简单的上下文的主要内容,如果未能解决你的问题,请参考以下文章