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, основаны на
сеть/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, которые с легкостью обрабатывают значительный трафик запросов и сложные задачи обработки данных.