Обработка HTTP-запросов в Golang

GolangGolangBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Этот лабораторный практикум旨在测试您使用Golang中的net/http包发出HTTP请求的能力。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/NetworkingGroup(["Networking"]) go/NetworkingGroup -.-> go/http_client("HTTP Client") subgraph Lab Skills go/http_client -.-> lab-15481{{"Обработка HTTP-запросов в Golang"}} end

HTTP-клиент

Требуется написать программу, которая отправляет HTTP GET-запрос на сервер и выводит HTTP-ответный статус и первые 5 строк тела ответа.

  • Программа должна использовать пакет net/http для отправки HTTP GET-запроса.
  • Программа должна выводить HTTP-ответный статус.
  • Программа должна выводить первые 5 строк тела ответа.
  • Программа должна обрабатывать ошибки грамотно.
$ go run http-clients.go
Статус ответа: 200 OK
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Go by Example</title>

Ниже представлен полный код:

// В стандартной библиотеке Go есть отличная поддержка
// для HTTP-клиентов и серверов в пакете `net/http`.
// В этом примере мы будем использовать его для отправки
// простых HTTP-запросов.
package main

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

func main() {

	// Отправить HTTP GET-запрос на сервер. `http.Get` - это
	// удобный способ вместо создания объекта `http.Client`
	// и вызова его метода `Get`; он использует объект
	// `http.DefaultClient`, который имеет полезные настройки
	// по умолчанию.
	resp, err := http.Get("https://gobyexample.com")
	if err!= nil {
		panic(err)
	}
	defer resp.Body.Close()

	// Вывести HTTP-ответный статус.
	fmt.Println("Статус ответа:", resp.Status)

	// Вывести первые 5 строк тела ответа.
	scanner := bufio.NewScanner(resp.Body)
	for i := 0; scanner.Scan() && i < 5; i++ {
		fmt.Println(scanner.Text())
	}

	if err := scanner.Err(); err!= nil {
		panic(err)
	}
}

Резюме

В этом лабораторном практикуме вы узнали, как использовать пакет net/http в Golang для отправки HTTP-запросов и обработки ошибок.