企业项目管理、ORK、研发管理与敏捷开发工具平台

网站首页 > 精选文章 正文

个人编写的go依赖包-https 网络请求包

wudianyun 2025-05-14 17:14:10 精选文章 4 ℃

依赖包地址:
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

Tags:

最近发表
标签列表