curl을 C(으)로 변환
curl2code는 libcurl을 사용하여 curl 명령을 C 코드로 변환합니다. 변환은 완전한 개인 정보 보호를 위해 WebAssembly를 통해 브라우저에서 실행됩니다. Rust의 경우 curl to Rust 변환기를 확인하세요. Go의 경우 curl to Go를 참조하세요. 아래는 적절한 메모리 관리가 포함된 실용적인 C 예제입니다.
브라우저에서 curl을 복사하는 방법
- 1
DevTools 열기
F12 또는 Ctrl+Shift+I를 눌러 브라우저 개발자 도구를 엽니다.
- 2
Network 탭으로 이동
Network 탭을 클릭하고 HTTP 요청을 트리거하는 동작을 수행합니다.
- 3
cURL로 복사
요청을 마우스 오른쪽 버튼으로 클릭 → Copy → Copy as cURL을 선택합니다. 그런 다음 위에 붙여넣으세요.
자주 묻는 질문 (FAQ)
libcurl이란 무엇인가요?
libcurl은 curl 명령줄 도구의 기반이 되는 C 라이브러리입니다. 25개 이상의 프로토콜을 지원하는 현존하는 가장 이식성이 높고 널리 배포된 HTTP 클라이언트 라이브러리입니다. 수천 개의 애플리케이션과 임베디드 시스템에서 사용됩니다. 시스템 패키지 관리자로 추가하거나 정적으로 링크하세요. curl2code는 easy 인터페이스를 사용하여 libcurl C 코드를 생성합니다.
libcurl easy vs multi 인터페이스 — 어떤 것을 사용해야 하나요?
easy 인터페이스(curl_easy_*)는 단일 동기 전송을 위한 것으로 간단하고 직관적입니다. multi 인터페이스(curl_multi_*)는 단일 스레드에서 비차단 동시 전송을 가능하게 합니다. 스크립트와 간단한 도구에는 easy를, 고성능 애플리케이션에는 multi를 사용하세요. 더 높은 수준의 C 계열 언어는 curl to Rust를 참조하세요.
libcurl에서 인증을 처리하는 방법은 무엇인가요?
Bearer의 경우 curl_slist_append(headers, "Authorization: Bearer token")으로 커스텀 헤더를 설정합니다. Basic 인증의 경우 curl_easy_setopt(curl, CURLOPT_USERPWD, "user:pass")를 사용합니다. libcurl은 Basic 인증 자격 증명을 자동으로 인코딩합니다. curl2code는 -u 및 헤더 플래그를 올바른 C API 호출로 변환합니다.
libcurl에서 멀티파트 폼 데이터를 보내는 방법은 무엇인가요?
MIME API(libcurl 7.56+)를 사용합니다: curl_mime_init()으로 mime 구조체를 생성하고, 각 필드에 대해 curl_mime_addpart()를, 파일 업로드에 대해 curl_mime_name() 및 curl_mime_filedata()를 사용합니다. CURLOPT_MIMEPOST로 설정하고 curl_mime_free()로 해제합니다.
libcurl에서 오류를 처리하는 방법은 무엇인가요?
모든 curl_easy_* 함수는 CURLcode를 반환하므로 CURLE_OK와 비교하여 확인하세요. 사람이 읽을 수 있는 메시지를 위해 curl_easy_strerror(code)를 사용합니다. 상세한 오류 문자열을 위해 CURLOPT_ERRORBUFFER를 설정하세요. curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code)로 HTTP 상태를 가져옵니다.
libcurl에서 메모리를 관리하는 방법은 무엇인가요?
핸들 사용이 끝나면 항상 curl_easy_cleanup()을 호출하세요. curl_slist_free_all()로 헤더 목록을 해제합니다. curl_mime_free()로 MIME 구조체를 해제합니다. 쓰기 콜백의 경우 자체 버퍼 할당을 관리하세요. 프로그램 종료 시 curl_global_cleanup()을 한 번 호출하세요. 리소스 해제 실패는 메모리 누수를 유발합니다.
libcurl에서 타임아웃을 설정하는 방법은 무엇인가요?
연결 타임아웃은 CURLOPT_CONNECTTIMEOUT으로, 전체 전송 시간은 CURLOPT_TIMEOUT으로 설정합니다(둘 다 초 단위). 밀리초 정밀도가 필요한 경우 CURLOPT_CONNECTTIMEOUT_MS 및 CURLOPT_TIMEOUT_MS를 사용하세요. 이는 curl CLI에서 --connect-timeout 및 --max-time으로 사용하는 옵션과 동일합니다.
libcurl에서 프록시를 구성하는 방법은 무엇인가요?
CURLOPT_PROXY를 프록시 URL로 설정합니다: curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:8080"). SOCKS5의 경우 CURLOPT_PROXYTYPE을 CURLPROXY_SOCKS5로 설정합니다. 프록시 인증의 경우 CURLOPT_PROXYUSERPWD를 사용합니다. libcurl은 http_proxy 환경 변수도 따릅니다.
C에서 JSON 바디를 포함한 POST 요청을 보내는 방법은 무엇인가요?
curl2code를 사용하여 curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL과 같은 curl POST 명령어를 C로 변환하세요. 생성된 코드는 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_string)를 사용합니다. curl2code는 JSON 콘텐츠가 포함된 -d/--data 플래그를 자동으로 감지하고 libcurl 코드에 적절한 Content-Type 헤더를 설정합니다.
C에서 Bearer 토큰 인증을 추가하는 방법은 무엇인가요?
curl -H "Authorization: Bearer YOUR_TOKEN" URL을 curl2code에 입력하면 struct curl_slist *headers = curl_slist_append(NULL, "Authorization: Bearer TOKEN")와 같은 인증 헤더가 포함된 libcurl 코드가 생성됩니다. curl2code는 -H "Authorization: Bearer ..." 및 --oauth2-bearer 플래그 모두에서 Bearer 토큰을 감지합니다. Basic auth의 경우 -u user:pass를 사용하세요.
C에서 Content-Type 헤더를 설정하는 방법은 무엇인가요?
curl2code는 curl -H "Content-Type: application/json" URL을 적절한 헤더가 포함된 libcurl 코드로 변환합니다: curl_slist_append(headers, "Content-Type: application/json"). -d 데이터의 경우 curl은 기본적으로 application/x-www-form-urlencoded를 사용하며, -F 폼 업로드의 경우 multipart/form-data를 사용합니다. curl2code는 각각을 올바른 libcurl API에 매핑합니다.