Comments (8)
from gout.
我理了下这个功能是可以实现(简单魔改下url.Encode函数)。有点好奇,SetQuery现在给出的值是按字典序排序过的。按道理服务端,无论是正常解析比如gin之类的框架还是参数签名,都可以正常解析。是什么特殊的需求吗?
from gout.
如果SetQuery传入的是map,肯定顺序会打乱的;map是无序的,建议增加键值对的传入方法;还有一个bug是SetHeader传入Struct,tag标记不会生效
from gout.
如果SetQuery传入的是map,肯定顺序会打乱的;map是无序的,建议增加键值对的传入方法;还有一个bug是SetHeader传入Struct,tag标记不会生效
SetQuery下面是用的url.Values类型编码成query string.
从源代码可以看出是会排序的。所以比较好奇乱序的使用代码。
我用nc 模拟服务端
nc -l 8080
使用gout的客户端代码使用map传参
package main
import "github.com/guonaihong/gout"
type testQuery struct {
C string `query:"c"`
B string `query:"b"`
A string `query:"a"`
}
func main() {
var err error
err = gout.GET(":8080").Debug(true).SetQuery(gout.H{"3": "3", "5": "5", "9": "9", "8": "8"}).Do()
if err != nil {
// 为了方便测试,直接panic
panic(err)
}
err = gout.GET(":1234").Debug(true).SetQuery(testQuery{C: "c", B: "B", A: "A"}).Do()
if err != nil {
// 为了方便测试,直接panic
panic(err)
}
}
from gout.
从我发的截图可以证实,无论是map还是struct还是slice编码之后的query string都是按字典序给出的。
你刚刚提的header tag不生效我确认下。
from gout.
SetHeader只有一种情况不会生效,这个header的field不符合rfc的规定,如果要所见即所得的设置header。可以使用SetHeaderRaw这个接口。
package main
import "github.com/guonaihong/gout"
type Header struct {
Header1 string `header:"header1"`
Header2 string `header:"header2"`
}
func main() {
var err error
err = gout.GET(":8080").SetHeaderRaw(Header{Header1: "aa", Header2: "bb"}).Do()
if err != nil {
panic(err)
}
}
from gout.
header的问题解决了;但是query重排序的问题最好也处理一下,可以让用户自行抉择是否需要重新排序
from gout.
可以我这个版本出个SetQueryRaw接口。
from gout.
Related Issues (20)
- debug模式支持全局开关以及日志输出 HOT 6
- 怎么上传文件流? HOT 3
- 识别response中的content-encoding HOT 3
- get cookies is array from editThisCookie HOT 7
- 在bind 前,缺少对http status 的判断 比如404 HOT 1
- 有并发问题, 一次bind 会消耗掉多个decoder HOT 4
- 扩展GET/POST/DELETE/PATCH等接口,支持模板语法
- 有没有办法替换掉语言自带的json库? HOT 4
- SetWWWForm会带两个换行符导致请求失败 HOT 2
- SetHeader接口会自动把key字段变成第一个字母大写,其他字母小写. HOT 5
- 优化下文档,补充下结构体tag说明
- 用自定义的http.Client 连接池不起作用 HOT 2
- 高并发下遇到的问题 HOT 9
- Query的数据顺序会乱序 HOT 1
- 并发测试如何记录返回结果 HOT 4
- 请教个问题,关于setProxy或者socks的 HOT 9
- 优化反爬 HOT 2
- debug.trace的信息可以提取出来吗? HOT 3
- 有考虑过支持修改ja3指纹嘛 HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gout.