优雅的处理POST请求URL带参数的情况

  • Post author:
  • Post category:其他


我们在日常开发中,接口定义方式最常见的是 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 版权协议,转载请附上原文出处链接和本声明。