Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Go — мощный и гибкий язык для создания веб-приложений. сеть package играет важную роль в экосистеме Go.

Как и большинство серверных языков программирования, Go поставляется с пакетом HTTP для взаимодействия с протоколом HTTP. Соответствующий пакет Go — это http пакет, подпакет сеть упаковка.

Что такое пакет net/http?

сеть/http package — одна из стандартных библиотек в Go. Он предоставляет полный набор функций и типов для создания HTTP-клиентов, серверов и других операций на основе HTTP. К ним относятся:

  • Функции для создания HTTP-запросов.
  • Обработка запросов и ответов.
  • Обслуживание HTTP-запросов.
  • Связанные объекты, такие как заголовки и файлы cookie.

сеть/http Пакет также поддерживает шифрование TLS/SSL, HTTP/2 и другие расширенные функции, что делает пакет незаменимым инструментом для разработчиков Go.

Многие популярные библиотеки и фреймворки Go, от веб-инструментария Gorilla до веб-фреймворка Echo, основаны на

instagram viewer
сеть/http упаковка.

Запуск простого HTTP-сервера

Запуск серверов — это одна из основных операций, которые вам необходимо понять для работы с протоколом HTTP.

Вот программа для запустить простой сервер в Go:

упаковка основной

Импортировать (
"ФМТ"
"сеть/http"
)

// обработчик — типичный обработчик HTTP-запроса-ответа в Go; подробности позже
функцияобработчик(с http. ResponseWriter, r *http. Запрос) {
// Fprintf форматирует строку для записи
ФМТ. Fprintf(w, "Привет, мир!")
}

функцияосновной() {
http. Функция HandleFunc("/", обработчик)
http. слушать и обслуживать(":8080", ноль)
}

обработчик функция является типичным обработчиком запроса-ответа для http упаковка. Эта функция записывает строку «Hello, World!» к автору ответа HTTP.

При запуске кода и посещении http://localhost: 8080/ в веб-браузере вы должны увидеть «Hello, World!» строка, отображаемая в вашем браузере.

Обработка запросов и ответов

Вы можете обрабатывать входящие запросы с HandleFunc метод http упаковка. HandleFunc Метод принимает строку маршрута и функцию-обработчик.

http. Запрос method является экземпляром входящего запроса, и вы можете использовать многочисленные методы вашего экземпляра для взаимодействия с запросами к маршруту.

http. Функция HandleFunc("/ пользователи", функция(с http. ResponseWriter, r *http. Запрос) {
выключатель р. Метод {
случай"ПОЛУЧАТЬ":
// обработка GET-запроса
случай"ПОЧТА":
// обработка POST-запроса
по умолчанию:
http. Ошибка (ш, "Неверный метод запроса", http. StatusMethodNotAllowed)
}
})

В приведенном выше коде используется http package для определения функции обработчика HTTP для /users маршрут. Функция обработчика прослушивает входящие HTTP-запросы на маршруте и обрабатывает их на основе метода запроса (например, ПОЛУЧАТЬ, ПОЧТА, и т. д.)

Функция-обработчик принимает ResponseWriter и Запрос методы в качестве аргументов. ResponseWriter это интерфейс, который помогает обработчику записывать данные в качестве ответа клиенту, а Запрос представляет собой структуру, содержащую информацию о входящем запросе, такую ​​как метод HTTP, URL-адрес, заголовки и т. д.

Функция обработчика выше использует выключатель оператор для определения метода запроса и запуска различных блоков кода на основе метода. Если метод ПОЛУЧАТЬ, обработчик будет обрабатывать ПОЛУЧАТЬ запрос. В противном случае метод ПОЧТА; он справится с ПОЧТА запрос.

Если метод какой-либо другой, он отправит http. Ошибка с сообщением «Недопустимый метод запроса» и StatusMethodNotAllowedКод состояния HTTP клиенту.

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

ж. Писать([]байт("Привет, мир!"))

Вы можете использовать НаписатьЗаголовок метод вашего ResponseWriter instance для записи заголовков клиенту.

ж. Заголовок записи (http. СтатусОК)

Работа с промежуточным программным обеспечением HTTP

Промежуточное ПО состоит из функций, которые перехватывают входящие HTTP-запросы для выполнения операций до того, как запрос перейдет к следующей функции-обработчику.

Вот пример регистрации функции обработчика промежуточного программного обеспечения в Go:

функцияПО промежуточного слоя(следующий http. Обработчик)http.Обработчик {
возвращаться http. HandlerFunc(функция(с http. ResponseWriter, r *http. Запрос) {
// регистрируем запрос
следующий. ServeHTTP(w, r)
// регистрируем ответ
})
}

ПО промежуточного слоя Функция принимает обработчик HTTP и возвращает новый обработчик HTTP. Возвращаемый обработчик HTTP — это анонимная функция, которая принимает модуль записи ответа HTTP и запрос HTTP. Функция регистрирует запрос и вызывает ПодаватьHTTP метод на следующий Обработчик HTTP, передающий модуль записи ответа и запрос в качестве аргументов.

Вы можете обрабатывать функции промежуточного программного обеспечения с помощью Ручка метод http упаковка. Ручка метод принимает маршрут и функцию промежуточного программного обеспечения.

http. Ручка("/", loggingMiddleware (http. HandlerFunc (обработчик)))

Перенаправления с помощью HTTP-пакета

Перенаправление — популярная операция для веб-приложений, которые направляют пользователей на другие ресурсы или веб-страницы.

Вы можете перенаправить на другую веб-страницу, используя Перенаправить метод http упаковка.

http. Перенаправить (w, r, " http://example.com", http. Статус перемещен навсегда)

Перенаправить метод принимает в ResponseWriter и Запрос экземпляры, новый URL-адрес страницы и код состояния для перенаправления.

Вы можете создавать сложные API в Go

http package — мощный и гибкий инструмент для создания сложных API. Вы можете использовать богатую стандартную библиотеку Go и другие мощные сторонние пакеты для добавления функциональных возможностей к вашим API, таких как подключение к базе данных и поддержка различных веб-приложений. рамки.

С помощью Go вы можете создавать масштабируемые высокопроизводительные API, которые с легкостью обрабатывают значительный трафик запросов и сложные задачи обработки данных.