90 lines
1.9 KiB
Go
90 lines
1.9 KiB
Go
|
// Package util...
|
||
|
//
|
||
|
// Description : util...
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 2021-11-04 2:38 下午
|
||
|
package util
|
||
|
|
||
|
import (
|
||
|
"net/url"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
// URLParseResult url解析
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 2:51 下午 2021/11/4
|
||
|
type URLParseResult struct {
|
||
|
Scheme string `json:"scheme"`
|
||
|
Domain string `json:"domain"`
|
||
|
URI string `json:"uri"`
|
||
|
Parameter map[string]string `json:"parameter"`
|
||
|
}
|
||
|
|
||
|
// URLEncode ...
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 2:39 下午 2021/11/4
|
||
|
func URLEncode(inputURL string) string {
|
||
|
return url.QueryEscape(inputURL)
|
||
|
}
|
||
|
|
||
|
// URLDecode ...
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 2:39 下午 2021/11/4
|
||
|
func URLDecode(inputURL string) (string, error) {
|
||
|
return url.QueryUnescape(inputURL)
|
||
|
}
|
||
|
|
||
|
// URLParse url解析
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 2:39 下午 2021/11/4
|
||
|
func URLParse(inputURL string) (*URLParseResult, error) {
|
||
|
var (
|
||
|
parseResult *url.URL
|
||
|
err error
|
||
|
)
|
||
|
if parseResult, err = url.Parse(inputURL); nil != err {
|
||
|
return nil, err
|
||
|
}
|
||
|
detail := &URLParseResult{
|
||
|
Scheme: parseResult.Scheme,
|
||
|
Domain: parseResult.Host,
|
||
|
URI: parseResult.Path,
|
||
|
Parameter: make(map[string]string),
|
||
|
}
|
||
|
for k, v := range parseResult.Query() {
|
||
|
if len(v) > 1 {
|
||
|
detail.Parameter[k] = "[" + strings.Join(v, ",") + "]"
|
||
|
} else {
|
||
|
detail.Parameter[k] = v[0]
|
||
|
}
|
||
|
}
|
||
|
return detail, nil
|
||
|
}
|
||
|
|
||
|
// BuildQueryURL 构建GET链接
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 2:43 下午 2021/11/4
|
||
|
func BuildQueryURL(apiURL string, parameter map[string]string) string {
|
||
|
u := url.Values{}
|
||
|
for k, v := range parameter {
|
||
|
u.Set(k, v)
|
||
|
}
|
||
|
apiURL = strings.Trim(apiURL, "?")
|
||
|
if strings.Contains(apiURL, "?") {
|
||
|
return apiURL + "&" + u.Encode()
|
||
|
}
|
||
|
return apiURL + "?" + u.Encode()
|
||
|
}
|