我正在构建Golang DELETE REST端点。此请求需要一组查询参数,该参数可过滤要删除的对象。
例如
到目前为止,如果有人发送请求,例如
我的实现删除具有age=24
的所有用户,并忽略无效的userId123
。
我想实现一种检查请求中查询参数是否无效的方法。在这种情况下,请求中包含userId123
应该返回Bad Request
。
我能想到的唯一方法是针对User
结构字段对每个参数进行字符串匹配。我想知道一种更好的方法。
感谢所有帮助。对http框架使用go版本go version go1.13.4 darwin/amd64
和net/http
。
在地图中记录有效参数:
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
}
}
....