Курс — «Программирование на Go для начинающих» — #17 Работа с сетью. HTTP-клиент и сервер в Go.
Здравствуйте, дорогие друзья.
Создание HTTP-сервера в Go
Go предоставляет мощный и простой в использовании пакет net/http
для создания HTTP-серверов. Вот базовый пример создания простого веб-сервера:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package main import ( "fmt" "net/http" ) func helloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Привет, мир!") } func main() { http.HandleFunc("/", helloHandler) fmt.Println("Сервер запущен на http://localhost:8080") http.ListenAndServe(":8080", nil) } |
В этом примере мы определяем функцию helloHandler
, которая будет обрабатывать все HTTP-запросы к корню сайта (/
). Затем мы используем функцию http.HandleFunc
для связывания пути URL с обработчиком и запускаем сервер на порту 8080 с помощью функции http.ListenAndServe
.
Создание HTTP-клиента в Go
Для создания HTTP-клиента в Go также используется пакет net/http
. Пример выполнения GET-запроса:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package main import ( "fmt" "io/ioutil" "net/http" ) func main() { response, err := http.Get("http://example.com") if err != nil { fmt.Printf("Ошибка при запросе: %s\n", err) return } defer response.Body.Close() body, err := ioutil.ReadAll(response.Body) if err != nil { fmt.Printf("Ошибка при чтении ответа: %s\n", err) return } fmt.Println(string(body)) } |
В этом примере мы используем функцию http.Get для выполнения GET-запроса к указанному URL. После проверки на наличие ошибки мы читаем тело ответа с помощью ioutil.ReadAll и выводим его в консоль.
Работа с JSON
Часто при создании веб-приложений требуется обмен данными в формате JSON. Go предоставляет пакет encoding/json для удобной работы с JSON, включая сериализацию и десериализацию данных.
Сериализация (Маршалинг)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { person := Person{Name: "Михаил", Age: 34} jsonData, err := json.Marshal(person) if err != nil { fmt.Println(err) return } fmt.Println(string(jsonData)) } |
Десериализация (Анмаршалинг)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package main import ( "encoding/json" "fmt" ) func main() { jsonData := []byte(`{"name":"Михаил","age":34}`) var person Person err := json.Unmarshal(jsonData, &person) if err != nil { fmt.Println(err) return } fmt.Printf("%+v\n", person) } |
Эти основы помогут вам начать работу с HTTP-клиентом и сервером в Go, а также с обработкой данных в формате JSON.
На этом все. Всем хорошего дня!
Цикл статей по курсу: «Язык программирования Go для начинающих».