本书未发布

11.6. Host路由器

未匹配的标注
package main

import (
    "github.com/eudore/eudore"
    "github.com/eudore/eudore/component/httptest"
)

func main() {
    app := eudore.NewApp(eudore.NewRouterStd(eudore.NewRouterCoreHost(nil)))
    app.AnyFunc("/* host=eudore.com", echoHandleHost)
    app.AnyFunc("/* host=eudore.cn", echoHandleHost)
    app.AnyFunc("/* host=eudore.*", echoHandleHost)
    app.AnyFunc("/* host=example.com", echoHandleHost)
    app.AnyFunc("/* host=www.*.cn", echoHandleHost)
    app.AnyFunc("/api/* host=*", echoHandleHost)
    app.AnyFunc("/api/* host=eudore.com,eudore.cn", echoHandleHost)
    app.AnyFunc("/*", echoHandleHost)

    // 请求测试
    client := httptest.NewClient(app)
    client.NewRequest("GET", "/").Do().CheckStatus(200).CheckBodyString("")
    client.NewRequest("GET", "/").WithHeaderValue("Host", "eudore.cn").Do().CheckStatus(200).CheckBodyString("eudore.cn")
    client.NewRequest("GET", "/").WithHeaderValue("Host", "eudore.com").Do().CheckStatus(200).CheckBodyString("eudore.com")
    client.NewRequest("GET", "/").WithHeaderValue("Host", "eudore.net").Do().CheckStatus(200).CheckBodyString("eudore.*")
    client.NewRequest("GET", "/").WithHeaderValue("Host", "www.eudore.cn").Do().CheckStatus(200).CheckBodyString("www.*.cn")
    client.NewRequest("GET", "/").WithHeaderValue("Host", "example.com").Do().CheckStatus(200).CheckBodyString("example.com")
    client.NewRequest("GET", "/").WithHeaderValue("Host", "www.example").Do().CheckStatus(200).CheckBodyString("")
    client.NewRequest("GET", "/api/v1").WithHeaderValue("Host", "example.com").Do().CheckStatus(200).CheckBodyString("*")
    client.NewRequest("GET", "/api/v1").WithHeaderValue("Host", "eudore.com").Do().CheckStatus(200).CheckBodyString("eudore.com,eudore.cn")

    app.Listen(":8088")
    // app.CancelFunc()
    app.Run()
}

func echoHandleHost(ctx eudore.Context) {
    ctx.WriteString(ctx.GetParam("host"))
}

反馈和交流请加群组:QQ群373278915

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~