go进行http,get或postJson请求

1,http封装get,postJson类

go 复制代码
package httpUtil

import (
	"bytes"
	logxx "go-gift-panel/src/log"
	"io"
	"io/ioutil"
	"net/http"
)

func PostJson(url string, jsonData []byte) string {
	logxx.Log.Info("请求的url=", url, " 请求的JSON Data:", string(jsonData))         // 输出 JSON 格式的数据
	resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData)) // 发起 POST 请求
	if err != nil {
		logxx.Log.Error("ERROR postJson请求异常 http.Post err:", err)
		return "e"
	}
	defer func(Body io.ReadCloser) {
		err := Body.Close()
		if err != nil {
			logxx.Log.Error("ERROR postJson请求异常 Body.Close err:", err)
		}
	}(resp.Body)
	body, err := ioutil.ReadAll(resp.Body) // 读取响应内容
	if err != nil {
		logxx.Log.Error("ERROR postJson读取body异常 ioutil.ReadAll err:", err)
		return "e"
	}
	logxx.Log.Info("请求返回内容 Response Body:", string(body), " Response Status:", resp.Status) // 输出响应内容
	return string(body)
}

func Get(url string) {
	logxx.Log.Info("请求的url=", url) // 输出
	resp, err := http.Get(url)     // 发起 GET 请求
	if err != nil {
		logxx.Log.Error("ERROR Get请求异常 http.Post err:", err)
		return
	}
	defer func(Body io.ReadCloser) {
		err := Body.Close()
		if err != nil {
			logxx.Log.Error("ERROR Get请求异常 Body.Close err:", err)
		}
	}(resp.Body)
	body, err := ioutil.ReadAll(resp.Body) // 读取响应内容
	if err != nil {
		logxx.Log.Error("ERROR Get读取body异常:", err)
		return
	}
	logxx.Log.Info("请求返回内容 Response Body:", string(body), " Response Status:", resp.Status) // 输出响应内容
}

2,日志logxx类

go 复制代码
package logxx

import (
	"github.com/sirupsen/logrus"
	"gopkg.in/natefinch/lumberjack.v2"
	"io"
	"os"
)

var Log = logrus.New()

// var file *os.File

func Init() {

	logFile := &lumberjack.Logger{
		Filename:   "/data/giftpanel/logs/giftpanel_.log",
		MaxSize:    100,   // megabytes 单个文件大小100MB
		MaxBackups: 100,   //保留100个文件
		MaxAge:     60,    //days	保留60天
		Compress:   false, // 是否压缩 便于查询不压缩
		LocalTime:  true,  //true使用本地时区
	}
	// 设置日志级别
	Log.SetLevel(logrus.InfoLevel)

	// 设置输出文件名和代码行号
	Log.SetReportCaller(true)
	// 设置日志格式为JSON格式
	Log.SetFormatter(&logrus.JSONFormatter{
		TimestampFormat: "2006-01-02 15:04:05.000", // 设置时间格式,包括毫秒
	})

	Log.SetOutput(logFile)
	// 设置同时输出到控制台和文件
	Log.SetOutput(io.MultiWriter(os.Stdout, logFile))
}
相关推荐
Zenova EdgeOS8 小时前
Go 工业边缘错误处理实战:用 errors 构建可追溯错误链
开发语言·数据库·golang
JavaPub-rodert10 小时前
从零搭建通用管理后台:ShiyuAdmin 的 Go、React 与 RBAC 实践
开发语言·react.js·golang
Yves..10 小时前
HTTP 协议学习笔记:从报文结构到抓包实践
网络协议·http·fiddler
沫璃染墨11 小时前
从零入门计算机网络系列(十二):HTTP长连接与会话管理详解——从Connection到Cookie与Session
linux·服务器·c++·tcp/ip·ubuntu·http·交互
microrain16 小时前
SagooIoT 的数据接入层只有四张表,却能接住三种外部数据
物联网·golang·数据建模·sagooiot
fly-iot17 小时前
【FDE知识库】(4):企业知识库怎么选型,开源知识库分享几个,选择开源协议友好的版本,开发wiki-go项目
golang·开源·开源协议
福大大架构师每日一题19 小时前
excelize v2.11.1发布:Go 1.26.0起步,16项安全修复与嵌入对象能力全面升级
开发语言·安全·golang
小贾要学习20 小时前
【C++后端开发项目】Reactor 模型 / C++ 仿写 muduo HTTP 服务器:让底层网络库真正跑起网页
linux·服务器·c++·http·网络编程·muduo·reactor模型
小小龙学IT20 小时前
Go 语言 pprof 性能剖析与调优深度解析:把“卡在哪“变成一张可执行的数据图
开发语言·后端·golang
十二同学啊21 小时前
Go 工程化详解:项目结构、代码规范、测试体系与 CI/CD 实践
ci/cd·golang·代码规范