Как в golang получить значения post/get параметров?

Пользователь

от richie_mayert , в категории: Golang , 7 месяцев назад

Как в golang получить значения post/get параметров?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от shayna.buckridge , 7 месяцев назад

@richie_mayert 

В Go существует стандартная библиотека net/http, которая позволяет получать значения параметров при отправке POST и GET запросов.


Чтобы получить значения POST параметров, вам понадобится объект http.Request, который вы можете получить в обработчике запроса. Затем вы можете использовать метод ParseForm() для распознавания и сохранения параметров формы. Ниже приведен пример использования:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main

import (
	"fmt"
	"net/http"
)

func main() {
	http.HandleFunc("/form", handleForm)
	http.ListenAndServe(":8080", nil)
}

func handleForm(w http.ResponseWriter, r *http.Request) {
	err := r.ParseForm()
	if err != nil {
		// обработка ошибки
	}

	name := r.Form.Get("name")
	age := r.Form.Get("age")

	fmt.Fprintf(w, "Name: %s
", name)
	fmt.Fprintf(w, "Age: %s
", age)
}


Чтобы получить значения GET параметров, вам необходимо использовать объект http.Request.URL и метод Query(). Ниже приведен пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main

import (
	"fmt"
	"net/http"
)

func main() {
	http.HandleFunc("/query", handleQuery)
	http.ListenAndServe(":8080", nil)
}

func handleQuery(w http.ResponseWriter, r *http.Request) {
	queryParams := r.URL.Query()
	name := queryParams.Get("name")
	age := queryParams.Get("age")

	fmt.Fprintf(w, "Name: %s
", name)
	fmt.Fprintf(w, "Age: %s
", age)
}


Обратите внимание, что примеры выше предполагают, что сервер слушает на порту 8080 и обработчики запросов находятся по адресам /form и /query. Вы можете изменить эти значения по своему усмотрению.