curl을 Go(으)로 변환
표준 net/http 패키지를 사용하여 curl 명령을 Go 코드로 변환하세요. curl2code는 WebAssembly를 통해 브라우저에서 완전히 실행되므로 데이터가 비공개로 유지됩니다. 더 높은 수준의 언어를 선호하신다면 curl to Python 변환기를 사용해 보세요. 시스템 프로그래밍의 경우 curl to Rust를 참조하세요. 아래는 바로 사용 가능한 Go 예제입니다.
브라우저에서 curl을 복사하는 방법
- 1
DevTools 열기
F12 또는 Ctrl+Shift+I를 눌러 브라우저 개발자 도구를 엽니다.
- 2
Network 탭으로 이동
Network 탭을 클릭하고 HTTP 요청을 트리거하는 동작을 수행합니다.
- 3
cURL로 복사
요청을 마우스 오른쪽 버튼으로 클릭 → Copy → Copy as cURL을 선택합니다. 그런 다음 위에 붙여넣으세요.
자주 묻는 질문 (FAQ)
Go net/http란 무엇인가요?
Go의 net/http는 표준 라이브러리에 포함된 프로덕션 등급의 HTTP 클라이언트 및 서버입니다. 외부 의존성이 필요 없으며, 기본적으로 HTTP/2를 지원하고 커넥션 풀링, 타임아웃, TLS 구성을 즉시 제공합니다. curl2code가 Go 변환을 위해 사용하는 유일한 라이브러리이며 서드파티 패키지는 필요하지 않습니다.
net/http와 서드파티 Go HTTP 클라이언트 중 무엇을 사용해야 하나요?
Go의 net/http는 대부분의 사용 사례에 충분히 강력합니다. 많은 언어와 달리 Go의 표준 라이브러리는 프로덕션 환경에서 바로 사용할 수 있습니다. resty와 같은 서드파티 옵션은 편의 기능(자동 재시도, 체이닝)을 추가하지만 의존성이 생깁니다. 유사하게 모든 기능이 포함된 방식을 원하신다면 curl to Rust 변환기(reqwest) 또는 curl to Python을 참조하세요.
Go에서 인증을 어떻게 처리하나요?
Authorization으로 req.Header.Set("Authorization", "Bearer "+token) 헤더를 설정하세요. Basic 인증의 경우 헤더를 자동으로 설정해 주는 req.SetBasicAuth(user, pass)를 사용합니다. curl2code는 -u 및 -H 'Authorization: ...'를 감지하여 올바른 Go 코드를 생성합니다.
Go에서 multipart 폼 데이터를 어떻게 보내나요?
mime/multipart 패키지를 사용하세요. multipart.NewWriter(body)로 writer를 생성하고, CreateFormField로 필드를, CreateFormFile로 파일을 추가합니다. Content-Type을 writer.FormDataContentType()으로 설정하세요. curl2code는 모든 -F 플래그 변환을 처리합니다.
Go에서 HTTP 에러를 어떻게 처리하나요?
Go는 명시적인 에러 반환을 사용합니다. if err != nil 이후 항상 http.Do(req)을 확인하세요. 그 다음 HTTP 수준의 에러를 위해 resp.StatusCode를 확인합니다. 리소스 누수를 방지하기 위해 항상 defer resp.Body.Close()를 호출하세요. 이러한 명시적 에러 처리는 Go의 핵심 패턴이며 예외(exception)나 try/catch가 없습니다.
Go에서 동시 HTTP 요청을 어떻게 만드나요?
고루틴(goroutine)과 sync.WaitGroup 또는 채널을 사용하세요. go func() { ... }()를 사용하여 각 요청을 고루틴에서 실행합니다. 제한된 동시성을 위해서는 세마포어 채널을 사용하세요. Go의 고루틴은 가벼워서 수천 개의 동시 요청을 쉽게 처리할 수 있습니다. 유사한 동시성 패턴은 curl to Rust를 참조하세요.
Go HTTP 클라이언트에서 타임아웃을 어떻게 설정하나요?
전체 요청 마감 시간을 위해 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 프록시 구성으로 변환합니다.
Go에서 JSON 바디를 포함한 POST 요청을 보내는 방법은 무엇인가요?
curl2code를 사용하여 curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL과 같은 curl POST 명령어를 Go로 변환하세요. 생성된 코드는 http.Post(url, "application/json", bytes.NewBuffer(jsonData))를 사용합니다. curl2code는 JSON 콘텐츠가 포함된 -d/--data 플래그를 자동으로 감지하고 net/http 코드에 적절한 Content-Type 헤더를 설정합니다.
Go에서 Bearer 토큰 인증을 추가하는 방법은 무엇인가요?
curl -H "Authorization: Bearer YOUR_TOKEN" URL을 curl2code에 입력하면 req.Header.Set("Authorization", "Bearer YOUR_TOKEN")와 같은 인증 헤더가 포함된 net/http 코드가 생성됩니다. curl2code는 -H "Authorization: Bearer ..." 및 --oauth2-bearer 플래그 모두에서 Bearer 토큰을 감지합니다. Basic auth의 경우 -u user:pass를 사용하세요.
Go에서 Content-Type 헤더를 설정하는 방법은 무엇인가요?
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는 각각을 올바른 net/http API에 매핑합니다.