Данные не доходят до нужной функции

есть такие uri

router.HandleFunc("/hello_page/", api.Hello_page).Methods(http.MethodPost)
router.HandleFunc("/check_user/", api.Check_user).Methods(http.MethodPost)

Для них есть api

func Hello_page(w http.ResponseWriter, r *http.Request) {
    _, encode_data := Decode_URL_query(w, r)
    token_for_compare := Requester("http://192.168.1.109:8282/check_user/", w, r, encode_data)
    w.Write(token_for_compare)
}


func Check_user(w http.ResponseWriter, r *http.Request) {
    encode_data := Get_URL_query_and_encode_it(w, r)
    //здесь все поля json  почему-то пустые. Хотя должны быть заполнены.
    exist_user, token_from_db, err := database.Check_pair_username_and_password(encode_data)
    var answer Answer
    if err == bcrypt.ErrMismatchedHashAndPassword {
        w.WriteHeader(http.StatusForbidden)
        answer.Answr = "Require"
    }
    if err == bcrypt.ErrHashTooShort {
        w.WriteHeader(http.StatusNotFound)
        answer.Answr = "NotFound"
    }
    if exist_user {
        w.WriteHeader(http.StatusOK)
        answer.Answr = token_from_db
    }
    w.Write(tmplsrv.Encoding(answer))
}

Функции которые получают параметры из запроса

func Get_URL_query_and_encode_it(w http.ResponseWriter, r *http.Request) []byte {
    user_data := JSON_struct{
        Email:    r.URL.Query().Get("email"),
        Password: r.URL.Query().Get("password"),
    }
    encode_data := tmplsrv.Encoding(user_data)
    return encode_data
}

func Decode_URL_query(w http.ResponseWriter, r *http.Request) (JSON_struct, []byte) {
    encode_data := Get_URL_query_and_encode_it(w, r)
    decode_data := JSON_struct{}
    tmplsrv.Decoding(encode_data, &decode_data)
    return decode_data, encode_data
}

И вспомогательная функция которая делает запросы к api

func Requester(address_uri string, w http.ResponseWriter, r *http.Request, encode_data []byte) []byte {
//хотя здесь  json заполнен.
    address_uri = strings.TrimSpace(fmt.Sprintf("\n%s\n", address_uri))
    resp, err := http.Post(address_uri, "application/json", bytes.NewBuffer(encode_data))
    errors(err)
    body, err := ioutil.ReadAll(resp.Body)
    errors(err)
    resp.Body.Close()
    return body
}

Вопрос. Если json заполнен параметрами запроса в функции Requester, заполенен в функции Hello_page то куда теряются параметры из json-а в функции Check_user? хотя если обратиться к uri

router.HandleFunc("/check_user/", api.Check_user).Methods(http.MethodPost)

То возвращается корректный ответ. В чем трабл? как лечить? Спасибо за внимание.

UPD: работает только если в url-е явно задать параметры

Requester(fmt.Sprintf("http://192.168.1.109:8282/check_user/?email=%s&password=%s", decode_data.Email, decode_data.Password), w, r, nil)

Ответы (1 шт):

Автор решения: Quester

заработало только с postform. Переписал Requester

func Requester(address_uri string, w http.ResponseWriter, r *http.Request, encode_data []byte) []byte {
    address_uri = strings.TrimSpace(fmt.Sprintf("\n%s\n", address_uri))
    decode_data := JSON_struct{}
    tmplsrv.Decoding(encode_data, &decode_data)
    params := url.Values{
        "email":    {decode_data.Email},
        "password": {decode_data.Password},
    }
    resp, err := http.PostForm(address_uri, params)
    errors(err)
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    errors(err)
    return body
}

И получение данных от пользователя

func Get_URL_query_and_encode_it(w http.ResponseWriter, r *http.Request) []byte {
    r.ParseForm()
    user_data := JSON_struct{
        Email:    r.FormValue("email"),
        Password: r.FormValue("password"),
    }
    encode_data := tmplsrv.Encoding(user_data)
    return encode_data
}
→ Ссылка