使用golang进行http,get或postJson请求

 更新时间:2023年12月13日 10:50:14   作者:彦楠  
这篇文章主要为大家详细介绍了如何使用golang进行http,get或postJson请求,文中的示例代码简洁易懂,具有一定的借鉴价值,感兴趣的小伙伴可以了解一下

1、http封装get,postJson类

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类

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))
}

到此这篇关于使用golang进行http,get或postJson请求的文章就介绍到这了,更多相关go请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Golang必知必会之Go Mod命令详解

    Golang必知必会之Go Mod命令详解

    go mod可以使项目从GOPATH的强制依赖中独立出来,也就是说你的项目依赖不再需要放在在GOPATH下面了,下面这篇文章主要给大家介绍了关于Golang必知必会之Go Mod命令的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • golang 网络框架之gin的使用方法

    golang 网络框架之gin的使用方法

    这篇文章主要介绍了golang 网络框架之gin的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 使用go xorm来操作mysql的方法实例

    使用go xorm来操作mysql的方法实例

    今天小编就为大家分享一篇关于使用go xorm来操作mysql的方法实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • Go工具链之go tool cover使用方法和示例详解

    Go工具链之go tool cover使用方法和示例详解

    go tool cover是Go工具链中的一个命令,作用是分析测试用例的代码覆盖率,本文将对go tool cover 作用,使用方法和使用场景作一个简单的介绍,感兴趣的同学可以参考阅读一下
    2023-07-07
  • Golang常量iota的使用实例

    Golang常量iota的使用实例

    今天小编就为大家分享一篇关于Golang常量iota的使用实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Go error的使用方式详解

    Go error的使用方式详解

    当我们需要在Go项目中设计error,就不得不先知道Go error几种常用方法,今天通过本文给大家介绍Go error的使用方式详解,感兴趣的朋友一起看看吧
    2022-05-05
  • Golang安全读写共享变量的方式详解

    Golang安全读写共享变量的方式详解

    互斥锁(Mutex)是一种常用的同步原语,用于防止多个协程同时访问共享资源,这篇文章主要介绍了Golang安全读写共享变量的方式,需要的朋友可以参考下
    2024-05-05
  • 浅析Golang中的内存逃逸

    浅析Golang中的内存逃逸

    内存逃逸分析是go的编译器在编译期间,根据变量的类型和作用域,确定变量是堆上还是栈上。本文将通过示例浅析一下Golang中的内存逃逸,需要的可以了解一下
    2022-10-10
  • gin自定义中间件解决requestBody不可重读(请求体取值)

    gin自定义中间件解决requestBody不可重读(请求体取值)

    这篇文章主要介绍了gin自定义中间件解决requestBody不可重读,确保控制器能够获取请求体值,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • go test 命令示例详解

    go test 命令示例详解

    go test是Go用来执行测试函数(test function)、基准函数(benchmark function)和示例函数(example function)的命令,这篇文章主要介绍了go test 命令,需要的朋友可以参考下
    2023-11-11

最新评论