#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.
Комментариев нет:
Отправить комментарий