From 103edbb16d783933eb2f07f290105fe6831495e8 Mon Sep 17 00:00:00 2001 From: Slava Zgordan Date: Mon, 21 Sep 2015 12:09:31 +0200 Subject: [PATCH] 04.1 --- ru/04.1.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ru/04.1.md b/ru/04.1.md index ce5d4baf..42f10e10 100644 --- a/ru/04.1.md +++ b/ru/04.1.md @@ -49,7 +49,7 @@ t, _ := template.ParseFiles("login.gtpl") t.Execute(w, nil) } else { - r.ParseForm() + //r.ParseForm() // логическая часть процесса входа fmt.Println("Пользователь:", r.Form["username"]) fmt.Println("Пароль:", r.Form["password"]) @@ -57,7 +57,7 @@ } func main() { - http.HandleFunc("/", sayhelloName) // устанавливаем правило маршрутизатора + http.HandleFunc("/", sayhelloName) // устанавливаем правила маршрутизатора http.HandleFunc("/login", login) err := http.ListenAndServe(":9090", nil) // устанавливаем порт для прослушивания if err != nil { @@ -78,9 +78,9 @@ Сервер ничего не напечатает, пока мы не введем имя пользователя и пароль, потому что хэндлер не будет анализировать данные, пока мы не вызовем `r.ParseForm()`. Давайте добавим `r.ParseForm()` перед `fmt.Println("username:", r.Form["username"])`, скомпилируем программу и вновь протестируем её. Вы обнаружите, что в этом случае информация стала печататься на стороне сервера. -`r.Form` содержит все аргументы запроса, например, сторку запроса в URL и данные в POST и PUT. Если в данных есть конфликты, например, параметры имеют одинаковое имя, сервер сохранит данные в срез из множества значений. Документация Go говорит о том, что Go сохраняет данные из запросов GET и POST в разных местах. +`r.Form` содержит все аргументы запроса, например, строку запроса в URL и данные в POST и PUT. Если в данных есть конфликты, например, параметры имеют одинаковое имя, сервер сохранит данные в срез из множества значений. Документация Go говорит о том, что Go сохраняет данные из запросов GET и POST в разных местах. -Попробуйте изменить значение поля 'action' в форме `http://127.0.0.1:9090/login` на `http://127.0.0.1:9090/login?username=astaxie` в файле `login.gtpl`, протестируйте работу формы, и Вы увидите, что на стороне сервера вывелся срез значений. +Попробуйте изменить значение поля 'action' в форме `http://127.0.0.1:9090/login` на `http://127.0.0.1:9090/login?username=astaxie` в файле `login.gtpl`, протестируйте работу формы, и Вы увидите, что на стороне сервера вывелся срез значений: ![](images/4.1.slice.png?raw=true) @@ -98,7 +98,7 @@ fmt.Println(v.Get("friend")) fmt.Println(v["friend"]) -**Совет** Запросы могут получать доступ к данным формы с использованием метода `FormValue()`. Например, можно вместо `r.Form["username"]` использовать `r.FormValue("username")`, и Go вызовет `r.ParseForm` автоматически. Отметим, что в случае наличия нескольких аргументов с одним и тем же именем этот метод вернет первое из значений, а в случае отсутствия такого аргумента вернет пустую строку. +**Совет:** Запросы могут получать доступ к данным формы с использованием метода `FormValue()`. Например, можно вместо `r.Form["username"]` использовать `r.FormValue("username")`, и Go вызовет `r.ParseForm` автоматически. Отметим, что в случае наличия нескольких аргументов с одним и тем же именем этот метод вернет первое из значений, а в случае отсутствия такого аргумента вернет пустую строку. ## Ссылки