go - 为什么 curl 为我的用户提供了错误的 json?

标签 go

我的功能有问题

func (driver *DBClient) GetUsersByFirstName(w http.ResponseWriter, r *http.Request) {
    var users []models.User
    name := r.FormValue("first_name")
    // Handle response details
    var query = "select * from \"user\" where data->>'first_name'=?"
    driver.db.Raw(query, name).Scan(&users)
    w.WriteHeader(http.StatusOK)
    w.Header().Set("Content-Type", "application/json")
    //responseMap := map[string]interface{}{"url": ""}
    respJSON, _ := json.Marshal(users)
    w.Write(respJSON)
}

当我使用 POST 时

curl -X POST \
http://localhost:8000/v1/user \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"username": "tsarcayan",
"email_address": "rsarnayan@gmail.com",
"first_name": "tigran",
"last_name": "tanayan"
}'

输出

{"id":4}

但是当我尝试获取用户 tigran 的 first_name 时

curl -X GET http://localhost:8000/v1/user/"tigran"

我得到了

{"user":{"ID":0,"CreatedAt":"0001-01-01T00:00:00Z","UpdatedAt":"0001-01-01T00:00:00Z","DeletedAt":null,"Orders":null},"data":null}`

如何解决这个问题?

我的 handle

r.HandleFunc("/v1/user", dbclient.GetUsersByFirstName).Methods("GET")

最佳答案

可能您应该使用 url 作为 http://localhost:8000/v1/user?first_name=tigran 并获取该参数作为 req.URL.Query()["first_name"][0] 但不要忘记用户输入检查

关于go - 为什么 curl 为我的用户提供了错误的 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55608470/

相关文章:

go - 怎么去网上找包裹?

go - 小时超出时间范围。在golang中解析

go - 如何关闭运行基于流的逻辑的 goroutine?

Go:需要设置属性但没有指针接收器?

c - 将 C 转换(翻译)为 Go 的工具?

JSON 解码为 struct 作为 interface{} 产生 map[string]interface{},而不是 struct

go - 我如何使用 Redigo "SCRIPT FLUSH"?

xml - 如何使用马提尼在 golang 中动态呈现为 HTML/JSON/XML?

go - Erlang/Golang 端口示例中的缓冲区大小

json - 在不使用反射或复制代码的情况下从多个 JSON 数组解码实体