• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
孙龙 程序员
少时总觉为人易,华年方知立业难
博客园    首页    新随笔    联系   管理    订阅  订阅
httpserver

 

 

 

 

快速创建一个httpserver

package main

import (
    "net/http"
    "fmt"
)

type MyHandler struct{

}


func(*MyHandler) ServeHTTP(write http.ResponseWriter,request *http.Request){
    write.Write([]byte("hello,myhandler"));
}

func main(){
        handler := new(MyHandler)
        server := http.Server{Addr:":8099",Handler:handler}
        err := server.ListenAndServe()
        if err != nil{
            fmt.Println(err)
        }
}

 路由 设置cookie  注销 判断登录

package main

import (
    "net/http"
    "time"
)

type MyHandler struct {

}
func(*MyHandler) ServeHTTP(writer http.ResponseWriter, request *http.Request){

     writer.Write([]byte("hello,myhandler"))
}

func main()  {

     mymux:=http.NewServeMux()
     mymux.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
         writer.Write([]byte("index"))
     })
     mymux.HandleFunc("/login", func(writer http.ResponseWriter, request *http.Request) {
        getUserName:= request.URL.Query().Get("username")
        if getUserName!=""{
            c:=&http.Cookie{Name:"username",Value:getUserName,Path:"/"}
            http.SetCookie(writer,c)
        }
        writer.Write([]byte("这里是登录页面"));
     })
     mymux.HandleFunc("/unlogin", func(writer http.ResponseWriter, request *http.Request) {
         c:=&http.Cookie{Name:"username",Value:"",Path:"/",Expires:time.Now().AddDate(-1,0,0)}
         http.SetCookie(writer,c)
         writer.Header().Set("Content-type","text/html")
         writer.Write([]byte("unlogin...."));
         script:=`<script>
            setTimeout(()=>{self.location='/'},2000)

</script>`
         writer.Write([]byte(script))
     })

    http.ListenAndServe(":8099",mymux)





}
View Code

 

自定义路由支持get、post

package main

import (
    "net/http"

    "gospace/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(writer http.ResponseWriter, request *http.Request) {
            writer.Write([]byte("get abc"))
    })
    router.Post("/", func(writer http.ResponseWriter, request *http.Request) {
        writer.Write([]byte("post abc"))
    })

    http.ListenAndServe(":8099",router)





}
main.go

 

package core

import (
    "net/http"
)

type MyRouter struct {
    Mapping map[string]map[string]http.HandlerFunc

}

func DefaultRouter() *MyRouter {
    return &MyRouter{make(map[string]map[string]http.HandlerFunc)}
}
func(this *MyRouter) Get(path string,f http.HandlerFunc)  {
    if this.Mapping["GET"]==nil{
        this.Mapping["GET"]=make(map[string]http.HandlerFunc)
    }
    this.Mapping["GET"][path]=f
}
func(this *MyRouter) Post(path string,f http.HandlerFunc)  {
    if this.Mapping["POST"]==nil{
        this.Mapping["POST"]=make(map[string]http.HandlerFunc)
    }
    this.Mapping["POST"][path]=f
}


func(this *MyRouter) ServeHTTP(writer http.ResponseWriter, request *http.Request){

        f:=this.Mapping[request.Method][request.URL.Path]
        f(writer,request)
}
MyRouter.go

 

本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/11255165.html

posted on 2019-07-27 15:08  孙龙-程序员  阅读(411)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3