From f5939dce5712c9cfd513c2c77c846993d975380e Mon Sep 17 00:00:00 2001 From: weloe <1345895607@qq.com> Date: Tue, 6 Jun 2023 03:35:21 +0800 Subject: [PATCH] feat: add UrlNoQuery(), used to return url without query param --- ctx/go-http-context/context_test.go | 7 +++++++ ctx/go-http-context/request.go | 13 +++++++++++++ ctx/request.go | 4 +++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/ctx/go-http-context/context_test.go b/ctx/go-http-context/context_test.go index 989180c..88151ec 100644 --- a/ctx/go-http-context/context_test.go +++ b/ctx/go-http-context/context_test.go @@ -253,6 +253,13 @@ func TestHttpRequest_Url(t *testing.T) { } } +func TestHttpRequest_UrlNoQuery(t *testing.T) { + s := NewTestHttpRequest(t).UrlNoQuery() + if s != "https://baidu.com/api/" { + t.Errorf("Url() = %s ,want https://baidu.com/api/", s) + } +} + func TestHttpResponse_SetHeader(t *testing.T) { req, _ := http.NewRequest(http.MethodGet, "/", nil) w := httptest.NewRecorder() diff --git a/ctx/go-http-context/request.go b/ctx/go-http-context/request.go index 4b740c6..ac8d630 100644 --- a/ctx/go-http-context/request.go +++ b/ctx/go-http-context/request.go @@ -39,6 +39,19 @@ func (d *HttpRequest) Url() string { return d.source.URL.String() } +func (d *HttpRequest) UrlNoQuery() string { + var scheme string + if d.source.URL.Scheme != "" { + scheme = d.source.URL.Scheme + } + if d.source.TLS != nil { + scheme = "https" + } else { + scheme = "http" + } + return scheme + "://" + d.source.Host + d.source.URL.Path +} + func (d *HttpRequest) Method() string { return d.source.Method } diff --git a/ctx/request.go b/ctx/request.go index acc888b..d3d55ff 100644 --- a/ctx/request.go +++ b/ctx/request.go @@ -10,8 +10,10 @@ type Request interface { Query(key string) string // Path https://example.org/ex?a=1&a=2&b=&=3&&&& Path() return /ex Path() string - // Url https://example.org//?a=1&a=2&b=&=3&&&& Url() return https://example.org/?a=1&a=2&b=&=3&&&& + // Url https://example.org/?a=1&a=2&b=&=3&&&& Url() return https://example.org/?a=1&a=2&b=&=3&&&& Url() string + // UrlNoQuery return Url without query param + UrlNoQuery() string // Method request method Method() string // Cookie get value from cookie