欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > golang語言http協議get拼接參數操作

golang語言http協議get拼接參數操作

熱門標簽:仙桃400電話辦理 湛江crm外呼系統排名 寧波語音外呼系統公司 重慶慶云企業400電話到哪申請 宿遷便宜外呼系統代理商 上海極信防封電銷卡價格 鄭州智能語音電銷機器人價格 地圖標注免費定制店 不封卡外呼系統

我就廢話不多說了,大家還是直接看代碼吧~

package main
import (
	"fmt"
	"net/url"
)
// Manage the HTTP GET request parameters
type GetRequest struct {
	urls url.Values
}
// Initializer
func (p *GetRequest) Init() *GetRequest {
	p.urls = url.Values{}
	return p
}
// Initialized from another instance
func (p *GetRequest) InitFrom(reqParams *GetRequest) *GetRequest {
	if reqParams != nil {
		p.urls = reqParams.urls
	} else {
		p.urls = url.Values{}
	}
	return p
}
// Add URL escape property and value pair
func (p *GetRequest) AddParam(property string, value string) *GetRequest {
	if property != ""  value != "" {
		p.urls.Add(property, value)
	}
	return p
}
// Concat the property and value pair
func (p *GetRequest) BuildParams() string {
	return p.urls.Encode()
}
func main() {
	init := new(GetRequest).Init()
	params := init.AddParam("market", "sh").AddParam("Inst","6000987").BuildParams()
	//params := init.AddParam("market", "sh")
	fmt.Println(params)
}

結果:

Inst=6000987market=sh

補充: golang常見字符串拼接通用處理方式

前言

我們在日常開發中,尤其是對接第三方登錄、支付、分享等功能時,時常需要對自己或接收到的數據進行一定的排序拼接后, 然后進行或加密或校驗的處理,雖然寫死順序可以解決問題,但代碼缺少了靈活性。

本文從通用性角度,以golang語言來處理一般情況下的字符串拼接問題。

目前已開發成專門的拼接工具go-join,歡迎使用并提出意見。

拼接處理

目前經常遇到的排序方式主要有以下兩種:

1、參數名ASCII碼從小到大排序

以下是微信開發者平臺的簽名要求:

簽名生成的通用步驟如下:

第一步,設所有發送或者接收到的數據為集合M,將集合M內非空參數值的參數按照參數名ASCII碼從小到大排序(字典序),使用URL鍵值對的格式(即key1=value1key2=value2…)拼接成字符串stringA。

特別注意以下重要規則:

◆ 參數名ASCII碼從小到大排序(字典序);

◆ 如果參數的值為空不參與簽名;

◆ 參數名區分大小寫;

◆ 驗證調用返回或微信主動通知簽名時,傳送的sign參數不參與簽名,將生成的簽名與該sign值作校驗。

◆ 微信接口可能增加字段,驗證簽名時必須支持增加的擴展字段

//JoinStringsInASCII 按照規則,參數名ASCII碼從小到大排序后拼接
//data 待拼接的數據
//sep 連接符
//onlyValues 是否只包含參數值,true則不包含參數名,否則參數名和參數值均有
//includeEmpty 是否包含空值,true則包含空值,否則不包含,注意此參數不影響參數名的存在
//exceptKeys 被排除的參數名,不參與排序及拼接
func JoinStringsInASCII(data map[string]string, sep string, onlyValues, includeEmpty bool, exceptKeys ...string) string {
 var list []string
 var keyList []string
 m := make(map[string]int)
 if len(exceptKeys) > 0 {
 for _, except := range exceptKeys {
  m[except] = 1
 }
 }
 for k := range data {
 if _, ok := m[k]; ok {
  continue
 }
 value := data[k]
 if !includeEmpty  value == "" {
  continue
 }
 if onlyValues {
  keyList = append(keyList, k)
 } else {
  list = append(list, fmt.Sprintf("%s=%s", k, value))
 }
 }
 if onlyValues {
 sort.Strings(keyList)
 for _,v := range keyList {
  list = append(list,data[v])
 }
 }else {
 sort.Strings(list)
 }
 return strings.Join(list, sep)
}

示例:

 data := make(map[string]string)
 data["appid"] = "wx_1234535"
 data["body"] = "test data"
 data["mch_id"] = "572836589"
 data["notify_url"] = "http://www.baidu.com"
 data["trade_type"] = "MWEB"
 data["spbill_create_ip"] = "192.169.0.1"
 data["total_fee"] = "100"
 data["out_trade_no"] = "2745890486870"
 data["nonce_str"] = "kdjskgjokghdk"
 data["sign"] = "signData"
 log.Println("str :", JoinStringsInASCII(data, "", false, false, "sign"))
 log.Println("str2 :", JoinStringsInASCII(data, "", true, false, "sign"))

示例結果:

str : appid=wx_1234535body=test datamch_id=572836589nonce_str=kdjskgjokghdknotify_url=http://www.baidu.comout_trade_no=2745890486870spbill_create_ip=192.169.0.1total_fee=100trade_type=MWEB
str2 : wx_1234535test data572836589kdjskgjokghdkhttp://www.baidu.com2745890486870192.169.0.1100MWEB

2.按照特定的參數順序拼接

//JoinStringsInOrder 數名按固定順序排列后拼接
//data 待拼接的數據
//sep 連接符
//onlyValues 是否只包含參數值,true則不包含參數名,否則參數名和參數值均有
//orders 按照順序的參數名,沒有的不參與拼接
func JoinStringsInOrder(data map[string]string, sep string,onlyValues bool, orders ...string) string {
 var list []string
 for _, key := range orders {
 if _,ok := data[key];!ok {
  continue
 }
 if onlyValues {
  list = append(list, data[key])
 }else {
  list = append(list, fmt.Sprintf("%s=%s", key, data[key]))
 }
 }
 return strings.Join(list, sep)
}

示例:

log.Println("str3 :", JoinStringsInOrder(data, "", false, "appid","body","mch_id","notify_url"))

log.Println("str4 :", JoinStringsInOrder(data, "", true, "appid","body","mch_id","notify_url"))

示例結果:

str3 : appid=wx_1234535body=test datamch_id=572836589notify_url=http://www.baidu.com

str4 : wx_1234535test data572836589http://www.baidu.com

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • golang gopm get -g -v 無法獲取第三方庫的解決方案
  • golang實現各種情況的get請求操作
  • Golang發送http GET請求的示例代碼
  • Golang執行go get私有庫提示"410 Gone" 的問題及解決辦法
  • golang使用http client發起get和post請求示例
  • 完美解決golang go get私有倉庫的問題

標簽:安康 遼寧 青海 儋州 海南 西雙版納 物業服務 電子產品

巨人網絡通訊聲明:本文標題《golang語言http協議get拼接參數操作》,本文關鍵詞  golang,語言,http,協議,get,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang語言http協議get拼接參數操作》相關的同類信息!
  • 本頁收集關于golang語言http協議get拼接參數操作的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    久久久久久久久一| 欧美日韩不卡在线| 精品成人在线观看| 日韩国产一二三区| 中文字幕天堂av| 欧美日精品一区视频| 亚洲精选一二三| 成人午夜在线播放| 亚洲欧美日韩第一页| 欧美成人性战久久| 人人爽香蕉精品| 黄色网址在线视频| 欧美一级专区免费大片| 偷拍一区二区三区| 亚洲少妇18p| 日韩一区二区麻豆国产| 日韩—二三区免费观看av| 97香蕉碰碰人妻国产欧美| 欧美日本韩国一区| 午夜不卡在线视频| 91丝袜在线观看| 日韩亚洲欧美在线| 老司机精品视频一区二区三区| 亚洲自拍偷拍一区二区| 精品久久久久香蕉网| 久久er99热精品一区二区| 亚洲无人区码一码二码三码的含义| 337p日本欧洲亚洲大胆精品| 韩国午夜理伦三级不卡影院| 日本精品久久久久中文| 中文天堂在线一区| 成人在线综合网站| 欧美综合亚洲图片综合区| 亚洲午夜成aⅴ人片| 亚洲观看黄色网| 欧美xxxx老人做受| 国产精品一二三| 女性裸体视频网站| 国产精品久久久久久久久免费樱桃 | 91精品午夜视频| 男女激情视频一区| 刘亦菲国产毛片bd| 自拍视频在线观看一区二区| 亚洲熟女乱综合一区二区| 678五月天丁香亚洲综合网| 美女视频黄免费的久久| 国产传媒第一页| 欧美激情一区二区三区四区| av中文字幕在线不卡| 欧美精品乱码久久久久久| 麻豆精品久久久| 欧美风情第一页| 亚洲综合一区二区| chinese麻豆新拍video| 国产日韩精品久久久| 男生和女生一起差差差视频| 日韩丝袜情趣美女图片| 国产成人av一区二区三区在线 | 亚洲图片第一页| 国产精品白丝在线| 中文字幕人妻一区二区三区| 国产日韩欧美精品综合| 91浏览器入口在线观看| 欧美草草影院在线视频| 成人av免费在线观看| 欧美一级午夜免费电影| 国产福利一区二区三区在线视频| 欧美亚洲禁片免费| 久久 天天综合| 欧洲一区在线电影| 精品一区二区在线看| 在线观看日韩电影| 久久精工是国产品牌吗| 91久久奴性调教| 久久综合综合久久综合| 欧美最猛性xxxxx直播| 久草热8精品视频在线观看| 欧美又粗又大又长| 美女视频免费一区| 91电影在线观看| 精品一二线国产| 欧美日韩中文一区| 国产精品一品二品| 日韩一区二区三区免费观看| www.亚洲色图.com| 26uuu国产电影一区二区| 在线观看欧美一区二区| 国产三级精品在线| 丝袜熟女一区二区三区 | 国产精品一二三| 日韩一区二区三区在线视频| 99国产一区二区三精品乱码| 久久亚洲精品国产精品紫薇| 亚洲午夜精品在线观看| 国产精品沙发午睡系列990531| 国产乱了高清露脸对白| 亚洲欧美国产77777| 亚洲欧美综合7777色婷婷| 天天操天天色综合| 欧美在线你懂的| 成人性生交大片| 日韩精品一区在线| 日本人添下边视频免费| 亚洲欧美日韩国产综合在线| 蜜桃视频最新网址| 久99久精品视频免费观看| 在线播放中文一区| 97久久超碰国产精品| 欧美国产日韩一二三区| 欧美大波大乳巨大乳| 日本一区中文字幕| 欧美日韩一区不卡| 91视频国产资源| 成人免费在线播放视频| 成年人网站在线观看视频| 精品一区二区三区欧美| 日韩久久精品一区| 天天插天天射天天干| 亚洲成av人在线观看| 欧美日韩一区小说| 91一区在线观看| 国产精品高潮呻吟| 日韩福利小视频| 国产一区在线视频| 久久综合色天天久久综合图片| 最新版天堂资源在线| 亚洲第一在线综合网站| 精品视频一区二区三区免费| 99国产欧美久久久精品| 国产精品色婷婷久久58| 波多野结衣欲乱| 国产成人在线影院 | 国产一区二区三区香蕉| 久久综合av免费| 国产黄色大片免费看| 国精产品一区一区三区mba桃花 | 欧美一区二区在线免费观看| 欧美激情一区二区三区p站| 亚洲一区二区欧美| 欧美久久久久中文字幕| 在线免费观看污视频| 婷婷成人综合网| 日韩免费观看高清完整版在线观看| 久久久国产精品无码| 日本aⅴ亚洲精品中文乱码| 欧美大肚乱孕交hd孕妇| 永久免费看mv网站入口78| 美日韩一区二区| 久久久国产综合精品女国产盗摄| 免费一级suv好看的国产网站| 精品亚洲免费视频| 国产精品三级电影| 欧洲猛交xxxx乱大交3| 91在线观看地址| 性久久久久久久久| 精品久久久久久最新网址| 99成人在线观看| 99国产精品国产精品久久| 亚洲精品成a人| 在线电影院国产精品| 中文字幕国产专区| 国产精品一级黄| 一区二区三区日本| 欧美一区二区黄| 欧美激情久久久久久久| 北条麻妃国产九九精品视频| 一区二区三区欧美| 欧美一区二区人人喊爽| 大吊一区二区三区| 99re成人精品视频| 人妖欧美一区二区| 国产精品每日更新在线播放网址| 欧美在线一区二区| av电影在线不卡| 国产**成人网毛片九色 | 粉嫩av一区二区三区粉嫩| 亚洲女人的天堂| 日韩午夜av电影| 国产麻豆a毛片| 免费黄色在线播放| 久久av中文字幕片| 国产精品色呦呦| 欧美高清视频一二三区| 极品蜜桃臀肥臀-x88av| 91在线视频免费91| 久久激情五月激情| 一区二区三区欧美久久| www久久久久| 欧美三级日韩三级国产三级| 91麻豆精品国产91久久综合| 亚洲欧美日韩中文字幕在线观看| 蜜臀91精品一区二区三区| 中文字幕一区二区三区四区不卡 | 久久www免费人成看片高清| 亚洲精品乱码久久久久久日本蜜臀| 日韩精品中文字幕在线一区| 色视频欧美一区二区三区| 一区二区三区免费在线观看视频| 成人18精品视频| 毛片av一区二区三区|