Ответ
Да, я активно работал как с созданием, так и с использованием API. В основном мой опыт связан с RESTful API и gRPC.
1. Создание API:
- RESTful API: Проектировал и реализовывал RESTful-сервисы на Go. Для простых задач использовал стандартную библиотеку
net/http. Для более сложных приложений с маршрутизацией, middleware и валидацией применял популярные фреймворки, такие как Gin или Chi. - gRPC: Разрабатывал высокопроизводительные микросервисы с использованием gRPC. Описывал контракты сервисов с помощью Protocol Buffers (
.proto) и генерировал на их основе код сервера и клиента. - Документация: Для документирования REST API использовал спецификацию OpenAPI (Swagger), что позволяло автоматически генерировать интерактивную документацию и клиентские SDK.
2. Использование (интеграция) API:
Я регулярно интегрировал наши сервисы со сторонними API. Для отправки HTTP-запросов в Go я использую стандартный пакет net/http.
Пример простого GET-запроса:
package main
import (
"fmt"
"io"
"log"
"net/http"
)
func main() {
// Выполняем GET-запрос к API
resp, err := http.Get("https://api.example.com/data")
if err != nil {
log.Fatalf("Ошибка при выполнении запроса: %v", err)
}
// Важно всегда закрывать тело ответа
defer resp.Body.Close()
// Читаем тело ответа
body, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatalf("Ошибка при чтении ответа: %v", err)
}
fmt.Println(string(body))
}Для более сложных сценариев, таких как работа с JSON, установка кастомных заголовков (например, для авторизации) или управление таймаутами, я настраиваю http.Client. Также имею опыт работы с генераторами клиентов, например oapi-codegen, который создает типобезопасный клиент на основе OpenAPI спецификации.