4.1 KiB
title | localeTitle |
---|---|
Receive data with your web server | Получать данные с вашего веб-сервера |
После того, как вы настроили свой веб-сервер и убедитесь, что он может обслуживать полезный контент, вы можете сделать его более интерактивным, позволяя ему принимать данные. Начнем с написания кода:
package main
import (
"net/http"
"html/template"
)
type PAGE struct {
NAME string
}
var page PAGE
func main() {
http.HandleFunc("/", servePage)
http.ListenAndServe(":8080", nil)
}
func servePage(writer http.ResponseWriter, reqest *http.Request) {
page.NAME = request.FormValue("name")
template := template.New("sayHello")
template, _ = template.Parse("Hello {{.NAME}}!")
template.Execute(writer, page)
}
Давайте сломаем этот код. Прежде всего, мы начинаем с импорта net/http
для веб-сервера и html/template
для шаблонов. В этой статье предполагается, что вы уже знаете, как шаблон в Go. Если вы еще этого не знаете, сначала прочитайте статью о шаблонах.
Затем мы создаем тип PAGE
с одним слотом в имени NAME
(это string
). Мы также создаем глобальную переменную, называемую page
типа PAGE
: созданная нами структура.
В функции servePage
есть одна вещь, которая действительно важна для этой статьи: метод FormValue
который мы запускаем по request
.
Прежде чем мы продолжим, вам сначала нужно знать, как создается URL
. В качестве примера возьмем следующий URL
:
https://google.com/search?q=free+code+camp
Если вы укажете URL
выше в своем браузере, он будет выполнять поиск в Google для free code camp
. URL
создается следующим образом:
https://
- это протоколgoogle.com
- это имя домена и порт (в этом случае нет упомянутого порта - поэтому браузер использует порт по умолчанию для протокола)/search
- это путьq=free+code+camp
- этоquery
Запрос - это та часть, о которой мы говорим в этой статье. Сервер Google видит этот URL
и из-за атрибута q
в запросе и значения q
- в этом случае free+code+camp
- он знает, где он должен искать.
Мы также можем применить это на нашем сервере. Давайте запустим программу и перейдем к браузеру:
http://localhost:8080/?name=world
Ответ будет следующим:
Hello world!
Как это работает? Ну, мы дали FormValue
параметр name
. Таким образом FormValue
знает, что нам нужно значение атрибута name
в запросе. В этом случае это world
, поэтому метод возвращает world
. Затем эта строка помещается в переменную page
а шаблон выполняет все остальное.
Это, конечно, действительно простая реализация этой функции, но вы могли бы сделать с ней многое. Например: вы можете принять адреса электронной почты и позволить программе хранить их в файле.