воскресенье, 3 февраля 2019 г.

Веб-приложение на Go: введение в пакет net/http, пример веб-сервера на Go

В качестве введения в пакет net/http рассмотрим полностью рабочий пример простого веб-сервера:

package main

import (
    "fmt"
    "log"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe(":8080", nil))
}

Функция main начинается с вызова http.HandleFunc, который сообщает пакету http обрабатывать все корневые веб запросы ("/") с помощью handler.

Затем он вызывает http.ListenAndServe, указывая, что он должен прослушивать порт 8080 на любом интерфейсе (":8080"). (Не беспокойтесь о втором параметре, nil, пока.) Эта функция будет блокироваться до завершения программы.

ListenAndServe всегда возвращает ошибку, поскольку она возвращается только тогда, когда случилась неожиданная ошибка. Чтобы записать эту ошибку в лог, мы заключаем вызов функции в log.Fatal.

Функция handler имеет тип http.HandlerFunc. Он принимает http.ResponseWriter и http.Request как его аргументы.

Значение http.ResponseWriter собирает ответ HTTP-сервера; написав в него, мы отправляем данные HTTP-клиенту.

http.Request - это структура данных, которая представляет клиентский HTTP-запрос. r.URL.Path является компонентом пути URL запроса. Конечный [1:] означает "создать под-срез Path от 1-го символа до конца." Это удаляет ведущий "/" из имени пути.

Если вы запустите эту программу и обратитесь к URL:

http://localhost:8080/monkeys

программа представит страницу, содержащую:

Hi there, I love monkeys!


Читайте также:


Комментариев нет:

Отправить комментарий