我正在尝试使用一个简单的方法来获取请求并解析参数,但它会返回错误的参数数量。
在我的主要内容中,我提出请求,然后致电:
fmt.Println(parseParams(r, "http://localhost:8080", 2))
导致在记录时在方法中设置以下值:
网址: /api/users
参数: [ api users]
len(params): 3
所以似乎它认为有一个额外的参数我没有指定并且仔细观察它我可以在参数中看到api之前的空间但是我不知道它来自哪里
func parseParams(req *http.Request, prefix string, num int) ([]string, error) {
url := strings.TrimPrefix(req.URL.Path, prefix)
params := strings.Split(url, "/")
if len(params) != num || len(params[0]) == 0 || len(params[1]) == 0 {
return nil, fmt.Errorf("Bad format. Expecting exactly %d params", num)
}
return params, nil
}
答案 0 :(得分:1)
您所看到的不是空格(仅仅是分隔符),而是空字符串,因此数组看起来像["", "api", "users"]
。如果你删掉逗号和引号,它将看起来像你的输出。
所以,你的参数是“”/“api”/“用户”。通常,您可以在处理参数时跳过此第0个索引。