Почему curl дает мне неправильный JSON для моего пользователя? - PullRequest
4 голосов
/ 10 апреля 2019

Что-то не так с моей функцией

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}

Но когда я пытаюсь получить first_name для пользователя tigran

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}`

Как это исправить?

Мой handlefunc

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

1 Ответ

1 голос
/ 10 апреля 2019

Возможно, вам следует использовать url как http://localhost:8000/v1/user?first_name=tigran и получить этот параметр как req.URL.Query()["first_name"][0], но не забывайте о проверке пользовательского ввода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...