Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpHsRt 242 of 280 menu
◀ ▶

Маршрут и текстовый ответ в Go

Маршрут связывает путь запроса с функцией, которая формирует ответ. В современном мультиплексоре шаблон записывают вместе с методом, например просмотр по пути /ping. Функция получает объект для записи ответа и указатель на запрос.

Тип для записи ответа умеет печатать текст и байты. Путь из запроса читают из поля адреса, если нужно сравнить его вручную; для учебного примера достаточно заранее заданного шаблона в регистрации.

Соберем мультиплексор, повесим на него один маршрут и запустим прослушивание на 127.0.0.1:8080:

package main import ( "fmt" "log" "net/http" ) func main() { mux := http.NewServeMux() mux.HandleFunc("GET /ping", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "pong") }) if err := http.ListenAndServe("127.0.0.1:8080", mux); err != nil { log.Fatal(err) } }

При обращении к /ping методом просмотра в ответе текст pong. Ошибку запуска печатают и завершают программу.

Второй маршрут можно добавить на тот же мультиплексор, не смешивая логику в одной функции:

package main import ( "fmt" "log" "net/http" ) func main() { mux := http.NewServeMux() mux.HandleFunc("GET /ping", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "pong") }) mux.HandleFunc("GET /hello", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "hi") }) if err := http.ListenAndServe("127.0.0.1:8080", mux); err != nil { log.Fatal(err) } }

Дан путь /time. Напишите полный main.go: при просмотре этого пути выведите в ответ текст ok и запустите прослушивание на 127.0.0.1:8080.

Дан следующий код:

mux := http.NewServeMux() mux.HandleFunc("GET /ping", func(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "pong") })

Скажите, какой аргумент нужно передать вторым при запуске прослушивания, чтобы сработали зарегистрированные маршруты.

Дан путь запроса /ping при методе отправки, отличном от просмотра. Скажите, сработает ли маршрут GET /ping из примера урока.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить