go对get、post请求封装
- 一、参考
- 1、Get请求封装
- 2、Post请求封装
- 二、按需调整
- 1、GET请求
- 2、POST请求
- 三、其他
- 四、json.Marshal()方法 特殊字符&被转义
一、参考
- 参考地址:go对get、post请求封装
1、Get请求封装
//Get http get method
func Get(url string, params map[string]string, headers map[string]string) (*http.Response, error) {//new requestreq, err := http.NewRequest("GET", url, nil)if err != nil {log.Println(err)return nil, errors.New("new request is fail ")}//add paramsq := req.URL.Query()if params != nil {for key, val := range params {q.Add(key, val)}req.URL.RawQuery = q.Encode()}//add headersif headers != nil {for key, val := range headers {req.Header.Add(key, val)}}//http clientclient := &http.Client{}log.Printf("Go GET URL : %s \n", req.URL.String())return client.Do(req)
}
2、Post请求封装
//Post http post method
func Post(url string, body map[string]string, params map[string]string, headers map[string]string) (*http.Response, error) {//add post bodyvar bodyJson []bytevar req *http.Requestif body != nil {var err errorbodyJson, err = json.Marshal(body)if err != nil {log.Println(err)return nil, errors.New("http post body to json failed")}}req, err := http.NewRequest("POST", url, bytes.NewBuffer(bodyJson))if err != nil {log.Println(err)return nil, errors.New("new request is fail: %v \n")}req.Header.Set("Content-type", "application/json")//add paramsq := req.URL.Query()if params != nil {for key, val := range params {q.Add(key, val)}req.URL.RawQuery = q.Encode()}//add headersif headers != nil {for key, val := range headers {req.Header.Add(key, val)}}//http clientclient := &http.Client{}log.Printf("Go POST URL : %s \n", req.URL.String())return client.Do(req)
}
二、按需调整
- 我不需要所有的
response
内容,我只要返回的res.Body
数据
1、GET请求
//Get http get method
func Get(url string, params map[string]string, headers map[string]string) ([]byte, error) {//new requestreq, err := http.NewRequest("GET", url, nil)if err != nil {log.Println(err)return nil, errors.New("new request is fail ")}//add paramsq := req.URL.Query()if params != nil {for key, val := range params {q.Add(key, val)}req.URL.RawQuery = q.Encode()}//add headersif headers != nil {for key, val := range headers {req.Header.Add(key, val)}}//http clientclient := &http.Client{}log.Printf("Go GET URL : %s \n", req.URL.String())//发送请求res, err := client.Do(req)if err != nil {return nil, err}defer res.Body.Close() //一定要关闭res.Body//读取bodyresBody, err := ioutil.ReadAll(res.Body) //把 body 内容读入字符串 sif err != nil {return nil, err}return resBody, nil
}
2、POST请求
//Post http post method
func Post(url string, body map[string]interface{}, params map[string]string, headers map[string]string) ([]byte, error) {//add post bodyvar bodyJson []bytevar req *http.Requestif body != nil {var err errorbodyJson, err = json.Marshal(body)if err != nil {log.Println(err)return nil, errors.New("http post body to json failed")}}req, err := http.NewRequest("POST", url, bytes.NewBuffer(bodyJson))if err != nil {log.Println(err)return nil, errors.New("new request is fail: %v \n")}req.Header.Set("Content-type", "application/json")//add paramsq := req.URL.Query()if params != nil {for key, val := range params {q.Add(key, val)}req.URL.RawQuery = q.Encode()}//add headersif headers != nil {for key, val := range headers {req.Header.Add(key, val)}}//http clientclient := &http.Client{}log.Printf("Go POST URL : %s \n", req.URL.String())//发送请求res, err := client.Do(req)if err != nil {return nil, err}defer res.Body.Close() //一定要关闭res.Body//读取bodyresBody, err := ioutil.ReadAll(res.Body) //把 body 内容读入字符串 sif err != nil {return nil, err}return resBody, nil
}
三、其他
因为还在学习之中,如果内容有误,请宽容指出,不胜感激~
四、json.Marshal()方法 特殊字符&被转义
- 如果希望
json.Marshal()
特殊字符&
不被转义为\u0026
:请参考 golang 微信小程序获取二维码scene参数报错 invalid scene rid: f05f96ab-5382f139-14b13d2f
go对get、post请求封装相关推荐
- 小程序仿 axios 请求封装
一.新建request.js /** 功能:小程序仿 axios 的请求封装*/ export default class Request {// 配置项configure = {baseURL: ' ...
- uni-app 请求封装
uni-app 请求封装 请求封装 // 默认配置 const instanceConfig = {baseURL: '',header: {'content-type': 'application/ ...
- ios 请求失败封装_vue_axios请求封装、异常拦截统一处理
1.前端网络请求封装.异常统一处理 vue中采用axios处理网络请求,避免请求接口重复代码,以及各种网络情况造成的异常情况的判断,采用axios请求封装和异常拦截操作: axios 请求封装 // ...
- vue请求封装,http-接口部分(文档笔记)
http-接口 目录结构 . ├── src 源码目录 │ ├── http 请求封装 │ │ ├── modules 请求所属模块 │ │ │ ├── example.js example模块请求 ...
- vue_axios请求封装、异常拦截统一处理
1.前端网络请求封装.异常统一处理 vue中采用axios处理网络请求,避免请求接口重复代码,以及各种网络情况造成的异常情况的判断,采用axios请求封装和异常拦截操作: axios 请求封装 // ...
- Python接口自动化之requests请求封装
------·今天距2021年253天·------ 这是ITester软件测试小栈第114次推文 在上一篇Python接口自动化测试系列文章:Python接口自动化之Token详解及应用,介绍tok ...
- Spring Boot + Vue 前后端分离开发,前端网络请求封装与配置
前端网络访问,主流方案就是 Ajax,Vue 也不例外,在 Vue2.0 之前,网络访问较多的采用 vue-resources,Vue2.0 之后,官方不再建议使用 vue-resources ,这个 ...
- 【 微信小程序请求封装】【进阶版】处理401请求token过期--重新登录--重新发起刚才过期的请求
微信小程序请求封装(拦截器):处理请求过期–重新登录–重新发起刚才过期的请求 env.js //这里使用的接口呢都是自己模拟的,可以根据自己的需求进行添加module.exports={//开发环境的 ...
- 微信小程序登录及请求封装
整合了获取用户信息/用户手机号/及请求封装 粘贴即用 目录结构 app.js //app.js // const util = require('/utils/util.js') // import ...
- PHP Request请求封装
/*** Request请求封装* Class Request* @package tool*/ class Request {// curl 请求错误码protected static $list_ ...
最新文章
- 《Hibernate 系列》- 入门例子
- 糟糕程序员的20个坏习惯
- 处理 read_csv 报错 OSError:Initializing from file failed
- 如何在Marketing Cloud的弹出UI窗口里添加扩展字段
- 标记偏见_分析师的偏见
- 如何使用Ionic和Firebase在短短三天内创建冠状病毒跟踪器应用程序
- python和c语言混合编程-python和C语言混编的几种方式
- linux canopen软件,CANopen学习笔记
- 叔丁基氢醌(TBHQ)行业调研报告 - 市场现状分析与发展前景预测
- linux设备驱动归纳总结(三):1.字符型设备之设备申请【转】
- 开关电流双线性映射无损积分器的电路结构和z变换函数
- 计算机考研复试——数据库篇
- 关于 Unicode 每个程序员应该知道的 5 件事
- VSLAM学习记录-求导:李群与李代数
- 如何准备面试?“-80,阿里Java开发面试解答
- linux企业级应用实战运维和调优资源,Linux企业级应用实战、运维和调优
- 个人如何做一个能赚钱的网站?
- 科学理论和计算机技术的发展史,探究计算机科学与技术的发展趋势
- 使用H5 canvas画一个坦克
- 当事情推动不了时,投诉或许是一种好的解决方案 | 每天成就更大成功
热门文章
- A - 加农炮(线段树)单点更新
- 用python建云盘_超简单!基于Python搭建个人“云盘”
- hive get_json_object json_tuple json解析详解
- MySql explain命令详解
- ironpython使用dictionary_Ironpython引用C#数据结构
- 图标和文字跟着div比例放大缩小_【方法技巧】高考地理越来越重视基本概念的考查,看高中地理如何考查比例尺的判读和应用,附专项练习...
- wxpython wx listctrl_wxPython实现指定单元格可编辑的ListCtrl | 学步园
- java中将date插入mysql中date_Java代码中Date类型插入到mysql数据库中数值不一致
- mac 启用root用户
- tp3.2 访问地址url大小写及控制器多个单词组成时url