网站首页 > 精选文章 正文
依赖包地址:
https://gitee.com/xiaoyutab/xgotool.git
本文示例中引入地址:import "
gitee.com/xiaoyutab/xgotool/https"
此包中包含常用的GET、POST、POSTJSON、Download等方法,支持日志注入等功能,具体用法如下:
PS 因go-fmt工具会自动引入依赖包,所以此处的示例代码中就不再进行依赖包的import引入
注入配置项
此包使用的注入方式为本框架统一的注入方式Regedit,具体用法如下:
package main
func main(){
// ......其他逻辑代码
https.Regedit(&https.Config{
LogsFunc: func(c *https.CURL){},// 日志记录函数注入
Https: false,// 是否验证HTTPS证书验证,默认为验证证书,后续可以使用 https.SwitchHttps(bol bool) 进行切换
TimeOut: time.Second * 60,// 超时时间设置
})
// ......其他逻辑代码
}
切换配置项方法
package main
func main(){
// ...... 其他逻辑代码
// 设置取消https证书验证
https.SwitchHttps(false)
// 该函数结束后再次调整证书为继续验证
defer https.SwitchHttps(true)
// 设置超时时间
https.SwitchTimeout(time.Second * 60)
// 另外,还支持自定义的http请求方式灵活注入,具体用法如:
// 此处使用*http.Client来传入client配置,因具体配置项过多,此处便不再进行详细描述,仅使用取消https证书格式的效验来进行举例
https.SwitchClient(&http.Client{
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: false,
},
},
})
// 函数逻辑结束后,再次恢复默认client配置
defer https.SwitchClient(nil)
// ...... 其他逻辑代码
}
支持的请求
包内支持常用的GET请求、POST请求、POSTJSON请求,令额外还支持Download方法用于离线下载文件,但因具体用法大同小异,所以此处仅作为示例使用,具体描述详情见:
https://pkg.go.dev/gitee.com/xiaoyutab/xgotool/https
GET请求
func Get(url string, param, header map[string]string) *CURL
url 请求地址
param 请求参数
header 请求头,自动追加accept、Content-Type等属性func DownloadGet(file, url string, param, header map[string]string) error
file 下载文件的存储文件名【如果存在会追加写入】
url 请求地址
param 请求参数
header 请求头,自动追加accept、Content-Type等属性
POST请求
func Post(url string, param, header map[string]string) *CURL
url 请求地址
param 请求参数
header 请求头,自动追加accept、Content-Type等属性func PostJson(url string, param map[string]any, header map[string]string) *CURL
url 请求地址
param 请求参数【如果不想封装外层map的话,可直接传入map[string]any{"_":xxx}(会在map最外层有且仅有_下标时才会直接取其内容进行传输)】
header 请求头,自动追加accept、Content-Type等属性func DownloadPost(file, url string, param, header map[string]string) error
file 下载文件的存储文件名【如果存在会追加写入】
url 请求地址
param 请求参数
header 请求头,自动追加accept、Content-Type等属性func DownloadPostJson(file, url string, param map[string]any, header map[string]string) error
file 下载文件的存储文件名【如果存在会追加写入】
url 请求地址
param 请求参数【如果不想封装外层map的话,可直接传入map[string]any{"_":xxx}(会在map最外层有且仅有_下标时才会直接取其内容进行传输)】
header 请求头,自动追加accept、Content-Type等属性
具体用法
有了接口文档以后,便可以根据用法来进行使用了,如:请求接口a.com/b,返回值为{"code":0,"data":{"data":["a","b","c"],"pages":{"current_page":1,"last_page":1,"limit":10,"per_page":1,"total":3},"total":3},"flag":true,"msg":"成功","time":"2023-11-07 15:16:49","uuid":"
9e56bdd2-7d3d-11ee-84af-000c2990c268"}
package main
func main(){
// ... 其他业务逻辑
// 定义返回值结构体类型,此处以A作为结构体结构来说明
a := A{}
err := https.GET("a.com/b",nil,nil).Json(&a)
if err != nil {
fmt.Println("返回值获取失败:",err)
}
// ... 其他业务逻辑
}
此处的Json为直接将返回结果映射到结构体的快捷方法,除了此方法还有JsonData方法
JsonData方法为Json(any,"data")的别名
Json中除了第一个映射的变量地址外,还可以有可选参数的string...来检索地址,检索方式为(simplejson.Json).GetPath,具体用法见:GetPath
猜你喜欢
- 2025-05-14 一款运行于windows上的linux命令神器-Cmder(已经爱不释手)
- 2025-05-14 Void开源编程神器!替代Cursor
- 2025-05-14 vllm+vllm-ascend本地部署QwQ-32B
- 2025-05-14 x-cmd install | Orbiton:极简至上的终端文本编辑器与轻量级 IDE
- 2025-05-14 零配置入门:用VSCode写Java代码的正确姿
- 2025-05-14 一起深入盘点 2025 年 React 发展的 10个趋势?
- 2025-05-14 Windows 11上的终端、Git Bash和CMD:初学者指南
- 2025-05-14 AI Coding 工具使用技巧,以 Cursor 为例
- 2025-05-14 Vibe编码或被淘汰
- 2025-05-14 iTerm2 + Oh My Zsh 配置 MacOS 超级终端
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)