使用golang進(jìn)行http,get或postJson請(qǐng)求
更新時(shí)間:2023年12月13日 10:50:14 作者:彥楠
這篇文章主要為大家詳細(xì)介紹了如何使用golang進(jìn)行http,get或postJson請(qǐng)求,文中的示例代碼簡(jiǎn)潔易懂,具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下
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("請(qǐng)求的url=", url, " 請(qǐng)求的JSON Data:", string(jsonData)) // 輸出 JSON 格式的數(shù)據(jù)
resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData)) // 發(fā)起 POST 請(qǐng)求
if err != nil {
logxx.Log.Error("ERROR postJson請(qǐng)求異常 http.Post err:", err)
return "e"
}
defer func(Body io.ReadCloser) {
err := Body.Close()
if err != nil {
logxx.Log.Error("ERROR postJson請(qǐng)求異常 Body.Close err:", err)
}
}(resp.Body)
body, err := ioutil.ReadAll(resp.Body) // 讀取響應(yīng)內(nèi)容
if err != nil {
logxx.Log.Error("ERROR postJson讀取body異常 ioutil.ReadAll err:", err)
return "e"
}
logxx.Log.Info("請(qǐng)求返回內(nèi)容 Response Body:", string(body), " Response Status:", resp.Status) // 輸出響應(yīng)內(nèi)容
return string(body)
}
func Get(url string) {
logxx.Log.Info("請(qǐng)求的url=", url) // 輸出
resp, err := http.Get(url) // 發(fā)起 GET 請(qǐng)求
if err != nil {
logxx.Log.Error("ERROR Get請(qǐng)求異常 http.Post err:", err)
return
}
defer func(Body io.ReadCloser) {
err := Body.Close()
if err != nil {
logxx.Log.Error("ERROR Get請(qǐng)求異常 Body.Close err:", err)
}
}(resp.Body)
body, err := ioutil.ReadAll(resp.Body) // 讀取響應(yīng)內(nèi)容
if err != nil {
logxx.Log.Error("ERROR Get讀取body異常:", err)
return
}
logxx.Log.Info("請(qǐng)求返回內(nèi)容 Response Body:", string(body), " Response Status:", resp.Status) // 輸出響應(yīng)內(nèi)容
}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 單個(gè)文件大小100MB
MaxBackups: 100, //保留100個(gè)文件
MaxAge: 60, //days 保留60天
Compress: false, // 是否壓縮 便于查詢不壓縮
LocalTime: true, //true使用本地時(shí)區(qū)
}
// 設(shè)置日志級(jí)別
Log.SetLevel(logrus.InfoLevel)
// 設(shè)置輸出文件名和代碼行號(hào)
Log.SetReportCaller(true)
// 設(shè)置日志格式為JSON格式
Log.SetFormatter(&logrus.JSONFormatter{
TimestampFormat: "2006-01-02 15:04:05.000", // 設(shè)置時(shí)間格式,包括毫秒
})
Log.SetOutput(logFile)
// 設(shè)置同時(shí)輸出到控制臺(tái)和文件
Log.SetOutput(io.MultiWriter(os.Stdout, logFile))
}到此這篇關(guān)于使用golang進(jìn)行http,get或postJson請(qǐng)求的文章就介紹到這了,更多相關(guān)go請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Go語言實(shí)現(xiàn)簡(jiǎn)單網(wǎng)絡(luò)聊天室(命令行模式)
這篇文章主要為大家詳細(xì)介紹了如何基于Go語言實(shí)現(xiàn)簡(jiǎn)單網(wǎng)絡(luò)聊天室,文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02
go 實(shí)現(xiàn)簡(jiǎn)易端口掃描的示例
該功能實(shí)現(xiàn)原理很簡(jiǎn)單,就是發(fā)送socket連接(IP+端口),如果能連接成功,說明目標(biāo)主機(jī)開放了某端口。當(dāng)要大量掃描端口時(shí),就需要寫并發(fā)編程了。2021-05-05
Golang回調(diào)函數(shù)與閉包和接口函數(shù)的定義及使用介紹
這篇文章主要介紹了Golang回調(diào)函數(shù)與閉包和接口函數(shù)的定義及使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-05-05
基于GORM實(shí)現(xiàn)CreateOrUpdate方法詳解
這篇文章主要為大家介紹了基于GORM實(shí)現(xiàn)CreateOrUpdate方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10

