有没有一种方法可以检查golang请求中的无效查询参数?

问题描述 投票:0回答:1

我正在构建Golang DELETE REST端点。此请求需要一组查询参数,该参数可过滤要删除的对象。

例如

https://endpoint.blah.com/users?userId=7&age=24

到目前为止,如果有人发送请求,例如

https://endpoint.blah.com/users?userId123=7&age=24

我的实现删除具有age=24的所有用户,并忽略无效的userId123

我想实现一种检查请求中查询参数是否无效的方法。在这种情况下,请求中包含userId123应该返回Bad Request

我能想到的唯一方法是针对User结构字段对每个参数进行字符串匹配。我想知道一种更好的方法。

感谢所有帮助。对http框架使用go版本go version go1.13.4 darwin/amd64net/http

http go request net-http
1个回答
0
投票

在地图中记录有效参数:

var allowedQueryParams = map[string]bool{"userid": true, "age": true}

根据该地图检查参数:

func handleRequest(w http.ResponseWriter, r *http.Request) {
  r.ParseForm()
  for k := range r.Form {
    if _, ok allowedQueryParams[k]; !ok {
       http.Error(w, "Bad request", http.StatusBadRequest)
       return
    }
  }
  ....
© www.soinside.com 2019 - 2024. All rights reserved.