<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          issue9/mux功能完備的 Go 路由器

          聯(lián)合創(chuàng)作 · 2023-10-01 11:24

          通過范型功能,可以很方便地實(shí)現(xiàn)一個(gè)自定義的路由:

          type Context struct {
          	R *http.Request
          	W http.ResponseWriter
          	P Params
          }
          
          type HandlerFunc func(ctx *Context)
          
          type Router = RouterOf[HandlerFunc]
          type Prefix = PrefixOf[HandlerFunc]
          type Resource = ResourceOf[HandlerFunc]
          type MiddlewareFunc = MiddlewareFuncOf[HandlerFunc]
          type Middleware = MiddlewareOf[HandlerFunc]
          type Options = OptionsOf[HandlerFunc]
          
          func New(name string, ms []Middleware, o ...Option)* Router {
          	f := func(w http.ResponseWriter, r *http.Request, ps Params, h HandlerFunc) {
          		ctx := &Context {
          			R: r,
          			W: w,
          			P: ps,
          		}
          		h(ctx)
          	}
          	return NewRouterOf[HandlerFunc](name, f, ms, o...)
          }
          
          // 以上就是自定義路由的全部功能,之后就可以直接使用:
          
          r := New("router", nil)
          
          r.Get("/path", func(ctx *Context){
          	// TODO
          	ctx.W.WriteHeader(200)
          })
          
          r.Prefix("/admin").Get("/login", func(ctx *Context){
          	// TODO
          	ctx.W.WriteHeader(501)
          })

          所有實(shí)現(xiàn)的路由,都支持以下功能:

          • 路由參數(shù);
          • 支持正則表達(dá)式作為路由項(xiàng)匹配方式;
          • 攔截正則表達(dá)式的行為;
          • 自動(dòng)生成 OPTIONS 請(qǐng)求處理方式;
          • 自動(dòng)生成 HEAD 請(qǐng)求處理方式;
          • 根據(jù)路由反向生成地址;
          • 任意風(fēng)格的路由,比如 discuz 這種不以 / 作為分隔符的;
          • 分組路由,比如按域名,或是版本號(hào)等;
          • CORS 跨域資源的處理;
          • 支持中間件;
          • 自動(dòng)生成 OPTIONS * 請(qǐng)求;
          • 靜態(tài)文件系統(tǒng);
          • TRACE 請(qǐng)求方法的支持;
          • panic 處理;

           

          瀏覽 22
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  999无码在线观看 | 天堂无码不卡 | 久操视频免费在线观看 | 一级性爱生活免费片 | 日日夜夜影音先锋 |