增加uri与请求参数的构建
This commit is contained in:
parent
3ba607205a
commit
0b64b70e9d
77
request/restful.go
Normal file
77
request/restful.go
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
// Package request ...
|
||||||
|
//
|
||||||
|
// Author: go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Description:
|
||||||
|
//
|
||||||
|
// File: restful.go
|
||||||
|
//
|
||||||
|
// Version: 1.0.0
|
||||||
|
//
|
||||||
|
// Date: 2021/07/07 20:11:57
|
||||||
|
package request
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// URIConfig 构建URI的配置
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
type URIConfig struct {
|
||||||
|
Template string // url模版
|
||||||
|
IsRestful bool // 是否是restful url
|
||||||
|
Left string // 左侧分隔符,针对restful生效
|
||||||
|
Right string // 右侧分隔符,针对restful生效
|
||||||
|
RemoveURIParam bool // 移除已经适配到URI里面的参数, 针对restful生效
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewDefaultNormalURIConfig构建普通URL配置
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
func NewDefaultNormalURIConfig(urlTemplate string) *URIConfig {
|
||||||
|
return &URIConfig{
|
||||||
|
Template: urlTemplate,
|
||||||
|
IsRestful: false,
|
||||||
|
Left: "",
|
||||||
|
Right: "",
|
||||||
|
RemoveURIParam: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewDefaultNormalURIConfig 构建普通 restful URL配置
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
func NewDefaultRestfullURIConfig(urlTemplate string, left string, right string, removeURIParam bool) *URIConfig {
|
||||||
|
return &URIConfig{
|
||||||
|
Template: urlTemplate,
|
||||||
|
IsRestful: true,
|
||||||
|
Left: left,
|
||||||
|
Right: right,
|
||||||
|
RemoveURIParam: removeURIParam,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// BuildRestfulURL 构建 restful URI
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 2021/07/07 20:14:54
|
||||||
|
func BuildURL(uriConfig *URIConfig, parameter map[string]interface{}) (string, map[string]interface{}) {
|
||||||
|
if !uriConfig.IsRestful {
|
||||||
|
return uriConfig.Template, parameter
|
||||||
|
}
|
||||||
|
uri := uriConfig.Template
|
||||||
|
finalParameter := make(map[string]interface{})
|
||||||
|
for field, val := range parameter {
|
||||||
|
if strings.Contains(uri, uriConfig.Left+field+uriConfig.Right) {
|
||||||
|
uri = strings.ReplaceAll(uri, "{"+field+"}", fmt.Sprintf("%v", val))
|
||||||
|
if uriConfig.RemoveURIParam {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finalParameter[field] = val
|
||||||
|
}
|
||||||
|
return uri, finalParameter
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user