Автоматизация работы с API в Go

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

gogoroutinesapi

👁 Go подходит для создания высокопроизводительных приложений с асинхронной обработкой данных. Goroutines и channels ускоряют параллельную отправку API-запросов.

📝 Пример автоматизации обработки нескольких API-запросов:

package main

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

func fetchData(url string, wg *sync.WaitGroup, ch chan<- string) {
    defer wg.Done()
    resp, err := http.Get(url)
    if err != nil {
        ch <- fmt.Sprintf("Error fetching %s: %s", url, err)
        return
    }
    ch <- fmt.Sprintf("Successfully fetched %s: %d", url, resp.StatusCode)
}

func main() {
    urls := []string{
        "https://jsonplaceholder.typicode.com/posts/1",
        "https://jsonplaceholder.typicode.com/posts/2",
        "https://jsonplaceholder.typicode.com/posts/3",
    }

    var wg sync.WaitGroup
    ch := make(chan string, len(urls))

    for _, url := range urls {
        wg.Add(1)
        go fetchData(url, &wg, ch)
    }

    wg.Wait()
    close(ch)

    for msg := range ch {
        fmt.Println(msg)
    }
}

📌 Как это работает:

  • В примере создаются goroutines для отправки запросов к нескольким API-эндпоинтам параллельно, что позволяет существенно снизить время выполнения.
  • Для синхронизации запросов используется sync.WaitGroup, который отслеживает завершение всех горутин.
  • Channel применяется для получения и обработки результатов выполнения каждой горутины.

❗️ Идеально подходит для автоматизации в проектах, где необходимо параллельно собирать данные с разных источников или выполнять множество однотипных операций.

tags: #go #автоматизация #разработка

🧭 @recura_tech 🌐 VK 🌐 MAX

Темная карточка со скриншотом кода на Go (goroutines, channels, sync.WaitGroup), пример автоматизации API-запросов с брендингом RECURA.
Скриншот кода примера автоматизации API-запросов в Go с фирменным оформлением RECURA.

Читайте так же