Конвертировать curl в Go
Конвертируйте команды curl в код Go с помощью стандартного пакета net/http. curl2code работает полностью в вашем браузере через WebAssembly — ваши данные остаются конфиденциальными. Если вы предпочитаете язык более высокого уровня, попробуйте наш конвертер curl в Python. Для системного программирования см. curl в Rust. Ниже приведены готовые примеры на Go.
Как скопировать curl из браузера
- 1
Откройте DevTools
Нажмите F12 или Ctrl+Shift+I, чтобы открыть инструменты разработчика в браузере.
- 2
Перейдите на вкладку Network
Нажмите на вкладку Network и выполните действие, которое инициирует HTTP-запрос.
- 3
Скопируйте как cURL
Нажмите правой кнопкой мыши на запрос → Copy → Copy as cURL. Затем вставьте его выше.
Часто задаваемые вопросы
Что такое Go net/http?
Пакет Go net/http — это HTTP-клиент и сервер промышленного уровня, включенный в стандартную библиотеку. Он не требует внешних зависимостей, поддерживает HTTP/2 по умолчанию и предоставляет пул соединений, таймауты и конфигурацию TLS «из коробки». Это единственная библиотека, которую curl2code использует для Go — сторонние пакеты не требуются.
net/http против сторонних HTTP-клиентов Go — что использовать?
Стандартный net/http в Go достаточно мощен для большинства случаев — в отличие от многих языков, стандартная библиотека здесь готова к продакшену. Сторонние варианты, такие как resty, добавляют удобства (автоповторы, цепочки вызовов), но добавляют зависимости. Для аналогичного подхода «все включено» см. наш конвертер curl в Rust (reqwest) или curl в Python.
Как обрабатывать аутентификацию в Go?
Установите заголовок Authorization с помощью req.Header.Set("Authorization", "Bearer "+token). Для Basic-аутентификации используйте req.SetBasicAuth(user, pass), который устанавливает заголовок автоматически. curl2code обнаруживает -u и -H 'Authorization: ...' и генерирует правильный код Go.
Как отправить multipart form data в Go?
Используйте пакет mime/multipart: создайте writer с помощью multipart.NewWriter(body), добавьте поля с помощью CreateFormField и файлы с помощью CreateFormFile. Установите Content-Type в значение writer.FormDataContentType(). curl2code обрабатывает все конвертации флагов -F.
Как обрабатывать ошибки HTTP в Go?
Go использует явный возврат ошибок: всегда проверяйте if err != nil после http.Do(req). Затем проверьте resp.StatusCode на наличие ошибок уровня HTTP. Всегда вызывайте defer resp.Body.Close(), чтобы предотвратить утечку ресурсов. Эта явная обработка ошибок является основным паттерном Go — никаких исключений, никаких try/catch.
Как делать конкурентные HTTP-запросы в Go?
Используйте горутины с sync.WaitGroup или каналами. Запускайте каждый запрос в горутине с помощью go func() { ... }(). Для ограниченной конкурентности используйте канал-семафор. Горутины в Go легковесны — вы можете легко обрабатывать тысячи конкурентных запросов. Аналогичные паттерны конкурентности см. в curl в Rust.
Как установить таймауты в HTTP-клиенте Go?
Установите client.Timeout для общего дедлайна запроса. Для более тонкого контроля используйте context.WithTimeout или context.WithDeadline и передайте контекст в http.NewRequestWithContext. Флаг curl --connect-timeout сопоставляется с таймаутом Transport.DialContext, а --max-time — с client.Timeout.
Как настроить прокси в Go?
Установите Transport.Proxy в значение http.ProxyURL(proxyUrl) в кастомном http.Transport. Go также по умолчанию учитывает переменные окружения HTTP_PROXY и HTTPS_PROXY через http.ProxyFromEnvironment. curl2code конвертирует флаги -x и --proxy в соответствующую конфигурацию прокси Go.
Как отправить POST-запрос с телом JSON на Go?
Преобразуйте команду curl POST, такую как curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL, в Go с помощью curl2code. Сгенерированный код использует http.Post(url, "application/json", bytes.NewBuffer(jsonData)). curl2code автоматически обнаруживает флаги -d/--data с содержимым JSON и устанавливает соответствующий заголовок Content-Type в коде net/http.
Как добавить авторизацию через Bearer token на Go?
Передайте curl -H "Authorization: Bearer YOUR_TOKEN" URL в curl2code, и инструмент сгенерирует код net/http с заголовком авторизации: req.Header.Set("Authorization", "Bearer YOUR_TOKEN"). curl2code распознает Bearer tokens как в флагах -H "Authorization: Bearer ...", так и в --oauth2-bearer. Для Basic auth используйте -u user:pass.
Как установить заголовок Content-Type на Go?
curl2code преобразует curl -H "Content-Type: application/json" URL в код net/http с правильным заголовком: req.Header.Set("Content-Type", "application/json"). Для данных -d curl по умолчанию использует application/x-www-form-urlencoded; для загрузки форм -F используется multipart/form-data. curl2code сопоставляет каждый вариант с подходящим API net/http.