Как работает пакет net/http в Golang?

Пользователь

от cooper.berge , в категории: Golang , год назад

Как работает пакет net/http в Golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от quinton.prosacco , год назад

@cooper.berge 

Пакет net/http в Go предоставляет функциональность для создания HTTP-серверов и клиентов.


Для создания HTTP-сервера в Go необходимо выполнить следующие шаги:

  1. Создать маршруты, которые будут обрабатывать запросы HTTP.
  2. Создать объект Server и настроить его.
  3. Вызвать метод ListenAndServe на объекте Server.


Пример кода для создания сервера:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package main

import (
	"fmt"
	"net/http"
)

func main() {
	// Создаем маршрут "/hello"
	http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprint(w, "Hello, World!")
	})

	// Создаем объект Server
	s := &http.Server{
		Addr: ":8080", // устанавливаем адрес и порт сервера
	}

	// Запускаем сервер
	if err := s.ListenAndServe(); err != nil {
		panic(err)
	}
}


В данном примере мы создаем маршрут "/hello" и настраиваем сервер на порт 8080. Затем мы вызываем метод ListenAndServe на объекте Server, который запускает сервер и начинает прослушивать входящие запросы.


Для создания клиента HTTP в Go можно использовать функции из пакета net/http, такие как Get, Post и т.д. Например, чтобы отправить GET-запрос на сервер и получить ответ, можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
resp, err := http.Get("https://example.com")
if err != nil {
    panic(err)
}
defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    panic(err)
}

fmt.Println(string(body))


В этом примере мы отправляем GET-запрос на сервер example.com и получаем ответ. Мы также читаем тело ответа и выводим его на экран.


В общем, пакет net/http в Go предоставляет простой и гибкий способ создания HTTP-серверов и клиентов, что делает его популярным инструментом для разработки веб-приложений и микросервисов.