Страницы

Поиск по вопросам

пятница, 20 декабря 2019 г.

Получение значений переданных методом POST в Go

#http #post #golang


Подскажите, пожалуйста, как в Go собрать все значения, переданные программе методом POST?

Примерно такой код:

package main
import "net/http"
func main() {
     http.HandleFunc("/", handler)
     http.ListenAndServe(":80", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
     if r.Method == "POST" {
           // Как собрать все значения POST ???
     }
     *****
}


Вариант r.FormValue("FIELD_NAME"), к сожалению, не подходит, поскольку мне заранее
неизвестно, какие именно поля будут переданы.
    


Ответы

Ответ 1



С http в Go не работал, но в официальных доках в описании структуры Request есть поле Form типа url.Values, которое становится доступным после ParseForm. Кароче делай ParseForm, а потом цикл for по r.Form.

Ответ 2



У объекта http.Request есть поле Form (r.Form). Это словарь всех значений. Он инициализируется после первого вызова r.FormValue. Вот сама ф-я r.FormValue func (r *Request) FormValue(key string) string { if r.Form == nil { r.ParseMultipartForm(defaultMaxMemory) } if vs := r.Form[key]; len(vs) > 0 { return vs[0] } return "" } Чтобы получить все значения можно попробовать самому парсить запрос, а можно вызвать r.FormValue с пустым значением (r.FormValue("")). После этого у нас будет готовый словарь параметров в r.Form.

Комментариев нет:

Отправить комментарий