我们在日常开发中,接口定义方式最常见的是 Restful API 或者 RPC,Restful API 基于 HTTP ,提供了几种请求方式,如:
请求方法 | 一般含义 |
---|---|
GET | 获取 |
POST | 新增 |
PUT | 更新 |
DELETE | 删除 |
GET 请求的参数一般会在 URL 后,例如:
http://ip:port/query?id=1
而POST请求一般都在请求体中。但是有些接口的参数比较奇葩,例如POST请求的时候,携带两部分参数,一部分在 body 里面,另一部分需要追加到 URL 后面。
这种情况下,我们可以直接将参数拼接到 URL 后面,但是总感觉不够优雅???
如果想优雅处理的话,可以使用 URL.RawQuery
URL 也是一个结构体(以Golang的url包下的URL 结构体为例)
type URL struct {
Scheme string
Opaque string // encoded opaque data
User *Userinfo // username and password information
Host string // host or host:port
Path string // path (relative paths may omit leading slash)
RawPath string // encoded path hint (see EscapedPath method)
ForceQuery bool // append a query ('?') even if RawQuery is empty
RawQuery string // encoded query values, without '?'
Fragment string // fragment for references, without '#'
RawFragment string // encoded fragment hint (see EscapedFragment method)
}
RawQuery string // encoded query values, without ‘?’
以 Golang 为例:
reqUrl := "https://xxx.xxx.xx.xxx:8009/login"
param := url.Values{}
param.Add("sid", sid)
...
request.URL.RawQuery = param.Encode()
版权声明:本文为weixin_36908494原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。