logo
GeekFormat

cURL 코드 생성기

cURL 명령어 입력

cURL 명령어를 붙여넣으면 URL, 요청 메서드, 헤더, 요청 본문, 자주 사용하는 옵션을 자동으로 분석합니다. 클릭 한 번으로 JavaScript fetch, Axios, Node fetch, Python requests/httpx, Go net/http, PHP cURL, Java OkHttp, C# HttpClient, PowerShell Invoke-RestMethod, wget 등 11개 언어의 실행 가능한 코드를 생성합니다.

요청 분석 결과

https://api.example.com/items헤더 1개본문 15자curlToCode.flag.followRedirects

생성된 코드

curlToCode.target.fetch

curl 명령어를 붙여넣으면 11개 언어의 실행 가능한 HTTP 요청 코드가 즉시 생성됩니다.

관련 추천

사용 사례

  • Chrome DevTools Network 패널에서 요청을 마우스 오른쪽 버튼으로 클릭→「Copy as cURL」 선택 후 본 도구에 붙여넣어 프로젝트에서 사용하는 언어의 코드로 직접 변환, 수동으로 요청을 작성하는 것보다 10배 빠름
  • 서드파티 API 문서에 curl 예제가 있을 때 Python requests/Java OkHttp/C# HttpClient 코드로 빠르게 변환하여 프로젝트에 삽입
  • 프로덕션 환경 API를 디버깅할 때 프록시 도구(Charles/mitmproxy/Wireshark)에서 curl 명령어를 복사하여 단위 테스트 코드로 변환하고 직접 검증
  • API 문서 작성 시 여러 언어 예제 간을 빠르게 전환하여 다양한 기술 스택의 독자에게 바로 실행 가능한 예제 코드 제공
  • 운영 환경 요청 문제를 트러블슈팅할 때 curl로 문제를 재현한 후 코드 형태로 변환하여 동료나 이슈에 공유하면 다른 사람이 쉽게 재현 가능
  • 크로스 언어 개발 시(예: Python에서 Go 프로젝트로 전환) 기존 curl 요청을 새 언어의 HTTP 클라이언트 호출 코드로 빠르게 변환하여 문서 찾는 시간 절약
  • Shell 스크립트에서 curl 명령어를 PowerShell Invoke-RestMethod로 변환하여 Windows 운영 담당자에게 전달하거나 그 반대로 변환
  • HTTP 프로토콜 학습: 같은 요청을 여러 언어로 구현한 코드를 비교하여 각 HTTP 클라이언트 라이브러리의 API 차이 이해
  • curl -X POST -d 'json'을 올바른 Content-Type과 JSON 직렬화가 포함된 코드로 빠르게 변환하여 수동 문자열 연결 오류 방지
  • CI/CD 스크립트에서 API를 호출해야 할 때 로컬에서 디버깅한 curl 명령어를 해당 스크립트 언어 코드로 변환하여 파이프라인에 삽입

주요 기능

  • 11가지 대상 언어/라이브러리: 프론트엔드(JS fetch/Axios), Node.js(node-fetch), Python(requests/httpx), Go(net/http), PHP(cURL), Java(OkHttp), C#(HttpClient), PowerShell(Invoke-RestMethod), 명령줄(wget)을 커버하여 주요 기술 스택을 모두 지원
  • 스마트한 cURL 명령어 파싱: URL, HTTP 메서드, 요청 헤더, 요청 본문을 자동 감지. 작은따옴표/큰따옴표, 백슬래시 이스케이프, 여러 줄 명령(백슬래시로 줄 이음) 지원
  • 일반적인 cURL 옵션 완벽 지원: -X/--request 메서드 지정, -H/--header 헤더, -d/--data/-F 폼/JSON 본문, -u/--user Basic 인증, -A/--user-agent UA, -b/--cookie 쿠키, -e/--referer Referer, -L/--location 리디렉션 따라가기, --compressed 자동 압축 해제, -k/--insecure 인증서 검증 건너뛰기, -I/--head HEAD 요청
  • JSON 본문 스마트 감지: Content-Type이 application/json일 때 JSON.parse/JSON.stringify/requests(json=)/json=를 사용하여 적절히 직렬화. 원시 문자열 대신 네이티브 객체를 사용하여 언어 관습에 맞는 코드 생성
  • Basic 인증 자동 변환: -u user:pass를 감지하면 Authorization: Basic <base64> 헤더를 자동 생성하거나 각 언어의 네이티브 auth 메커니즘(Python auth=, OkHttp credentials, C# credentials 등) 사용
  • 보안 플래그 배지: --compressed/-L/-k/-u 등의 옵션을 자동 감지하여 파싱 결과에 배지로 명확하게 표시
  • 메서드 수동 전환: cURL 메서드를 자동 파싱한 후 드롭다운에서 수동으로 전환(GET/POST/PUT 등 7가지) 가능, 즉시 해당 코드 확인
  • 안전한 문자열 이스케이프: 각 언어의 네이티브 문자열 리터럴 사용(Python 삼중 따옴표/백슬래시 이스케이프, Go 백틱 raw 문자열, C# @"", PHP 작은따옴표, Java 큰따옴표 이스케이프), 코드 실행 시 구문 오류 방지
  • 파싱 오류 알림: 유효하지 않은 cURL 명령어(URL 없음, curl로 시작하지 않음, POST에 본문 없음 등)일 때 주황색 경고 배지로 구체적인 문제 표시
  • 3가지 예제 원클릭 로드: GET+Token 인증, POST+JSON, Basic 인증+리디렉션 따라가기의 3가지 전형적인 예제를 제공하여 도구 기능을 빠르게 확인
  • 입력 원클릭 지우기: Clear 버튼으로 빠르게 재설정, 새 명령어 붙여넣어도 잔여물 없음
  • 완전 로컬 처리: cURL 명령어와 요청 내용은 모두 브라우저 로컬에서 파싱 및 변환, 서버에 업로드되지 않아 민감한 Token/비밀번호가 유출되지 않음
  • 코드 원클릭 복사: 코드 생성 후 Copy 버튼을 클릭하여 클립보드에 복사, 프로젝트에 붙여넣어 바로 실행 가능
  • HTTPS 안전하지 않은 모드 지원: -k/--insecure 옵션 감지 시 Node/Go/Python/PHP/C#/PowerShell 등 각 언어에 해당하는 TLS 인증서 검증 건너뛰기 설정 생성(wget은 --no-check-certificate, C#은 ServicePointManager 힌트, Node는 NODE_TLS_REJECT_UNAUTHORIZED 설정)

이용 방법

  1. curl 명령어 가져오기: 브라우저 DevTools Network 패널에서 요청을 마우스 오른쪽 버튼으로 클릭→Copy→Copy as cURL (bash); 또는 Postman/Charles/mitmproxy 등 프록시 도구에서 cURL 내보내기; 또는 직접 curl 명령어 작성
  2. 입력 상자에 붙여넣기: curl 명령어를 상단 입력 영역에 붙여넣기. 한 줄/여러 줄(백슬래시 줄 이음) 명령어 지원, 줄바꿈 자동 제거
  3. 예제 버튼 클릭하여 참고: 형식이 익숙하지 않으면 「예제1/2/3」을 클릭하여 미리 설정된 curl 명령어를 로드하고 효과 확인
  4. 파싱 결과 확인: 파싱 결과 영역에 URL, 헤더 수, 본문 문자 수, 압축/리디렉션/인증서 건너뛰기/Basic 인증 등 배지가 표시되며, 문제가 있으면 주황색 경고 표시
  5. 필요시 메서드 조정: 자동 인식된 메서드가 잘못된 경우(curl에 -X POST가 없지만 POST여야 하는 등) 드롭다운에서 HTTP 메서드 수동 전환
  6. 대상 언어 선택: 대상 코드 영역에서 해당 언어 버튼 클릭(fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget 등)
  7. 코드 복사: 「코드 복사」 버튼을 클릭하여 프로젝트/터미널에 붙여넣고 실행

자주 묻는 질문

cURL to Code 도구가 무슨 소용인가요? 왜 curl 명령어를 직접 사용하지 않나요?

코드에서 curl 명령어를 직접 호출하는 것(shell_exec, subprocess.run 등)은 서브프로세스 시작이 필요하여 안전하지 않을 뿐만 아니라 오류 처리, 응답 헤더 가져오기, 형 변환이 어려워집니다. 프로덕션 코드는 언어 네이티브 HTTP 클라이언트(Python requests, Java OkHttp, JS fetch 등)를 사용해야 합니다. curl-to-code의 가치는 DevTools/프록시 도구에서 복사한 curl 명령어를 대상 언어의 HTTP 클라이언트 코드로 자동 번역하여 API 문서를 찾아보거나 수동으로 따옴표를 이스케이프하거나 JSON/인증을 처리하는 기계적인 작업을 절약하는 것입니다. 복사하여 붙여넣으면 바로 실행할 수 있습니다.

어떤 대상 언어/라이브러리를 지원하나요?

현재 11가지 대상을 지원합니다: JavaScript fetch(브라우저 네이티브), Axios(Node/브라우저 범용 HTTP 라이브러리), Node.js node-fetch, Python requests(Python에서 가장 인기 있는 HTTP 라이브러리), Python httpx(HTTP/2와 비동기를 지원하는 차세대 HTTP 라이브러리), Go net/http(Go 표준 라이브러리), PHP cURL 확장, Java OkHttp(Android/백엔드 범용 고성능 라이브러리), C# HttpClient(.NET 표준 HTTP 클라이언트), PowerShell Invoke-RestMethod(Windows 자동화 스크립트에서 일반적), wget(명령줄 다운로드 도구). 필요한 언어가 목록에 없으면(Ruby, Rust reqwest, Dart http, Swift URLSession 등) 페이지에서 피드백을 보내주세요. 수요에 따라 추가를 검토하겠습니다.

Chrome DevTools에서 curl 명령어를 복사하려면 어떻게 하나요?

단계: 1. Chrome/Edge를 열고 F12를 눌러 DevTools를 엽니다; 2. Network 패널로 전환; 3. 페이지를 새로고침하거나 대상 요청을 트리거; 4. 요청 목록에서 대상 요청을 찾습니다(XHR/JS로 필터 가능); 5. 해당 요청을 마우스 오른쪽 버튼으로 클릭→Copy→「Copy as cURL (bash)」 선택(호환성을 위해 bash 버전 권장); 6. 본 도구 입력 상자에 붙여넣기. Copy as fetch는 선택하지 마세요(JS 코드이며 curl이 아닙니다). Firefox/Safari도 유사한 작업으로 Copy as cURL 옵션이 있습니다.

curl 명령어의 따옴표 처리가 번거로운데 어떤 형식을 지원하나요?

bash 스타일 작은따옴표, 큰따옴표, 백슬래시 이스케이프; Windows cmd 큰따옴표+^ 이스케이프; PowerShell 백틱 이스케이프를 인식합니다. bash 형식(작은따옴표) 사용을 권장합니다. 여러 줄 명령(백슬래시\ 줄 이음)도 붙여넣을 수 있으며 도구가 자동으로 줄바꿈과 줄이음 문자를 제거합니다. curl 명령어가 특히 복잡한 경우(셸 변수, 명령 치환$(...), 파이프| 등 포함) 터미널에서 echo 명령을 실행하여 확장된 실제 curl을 출력한 후 복사하거나, 사전에 수동으로 단순화(변수를 실제 값으로 대체)하는 것을 권장합니다.

curl에서 -d로 JSON을 전송하면 왜 서버에서 깨진 문자/400이 반환되나요?

이것은 가장 흔한 curl 실수 중 하나입니다. curl의 -d/--data 옵션 기본 Content-Type은 application/x-www-form-urlencoded(폼 형식)이며 application/json이 아닙니다. curl -d '{"name":"demo"}' url을 직접 실행하면 서버가 폼으로 파싱하여(파싱 실패하거나 빈 데이터 수신) JSON을 올바르게 전송하려면 명시적으로 -H "Content-Type: application/json" 헤더를 추가해야 합니다. 본 도구는 본문은 있지만 Content-Type이 없을 때 주황색 경고를 표시합니다.

생성된 코드를 직접 복사하여 실행할 수 있나요? 어떤 종속성을 설치해야 하나요?

대부분의 언어 코드는 표준 라이브러리를 사용하여 직접 실행할 수 있습니다(fetch/Go net/http/PHP cURL/C# HttpClient/PowerShell/wget은 모두 내장). 추가 설치가 필요하지 않습니다. 서드파티 라이브러리가 필요한 것: Axios(npm install axios), node-fetch(npm install node-fetch, Node 18+에는 fetch가 내장되어 설치 불필요), Python requests(pip install requests), Python httpx(pip install httpx), Java OkHttp(Maven/Gradle로 okhttp3 종속성 추가). 코드는 기본적으로 응답 상태 코드와 텍스트를 출력합니다. 필요에 따라 처리 로직을 수정하세요.

multipart/form-data 파일 업로드(-F 매개변수)를 지원하나요?

기본 지원: -F 매개변수는 요청 본문으로 인식되지만 생성되는 코드는 현재 @file을 실제 파일 업로드가 아닌 리터럴 문자열로 처리합니다. 파일 업로드에는 로컬 파일 내용 읽기가 필요하며 언어마다 처리 방식이 크게 다릅니다(JS는 FormData/FormData.append, Python은 files= 매개변수, Go는 multipart.Writer 사용). 도구에서 생성된 코드를 기반으로 각 라이브러리의 파일 업로드 문서를 참조하여 조정하는 것을 권장합니다. 향후 버전에서 multipart 지원을 강화할 예정입니다.

curl 명령어나 민감한 데이터가 업로드되나요?

전혀 그렇지 않습니다. 모든 파싱과 코드 생성은 100% 사용자의 브라우저 로컬에서 이루어집니다(순수 프론트엔드 JavaScript). curl 명령어, 헤더의 Token/쿠키/비밀번호, 요청 본문의 데이터는 어떤 서버에도 전송되지 않습니다. 오프라인에서도 본 도구를 사용할 수 있어 민감한 정보 유출을 걱정할 필요가 없습니다.

-k/--insecure 인증서 검증 건너뛰기는 각 언어 코드에서 어떻게 처리되나요?

-k를 감지하면 본 도구는 각 대상 언어에 해당하는 인증서 건너뛰기 설정을 생성합니다: Python requests/httpx는 verify=False 사용; Node.js는 process.env.NODE_TLS_REJECT_UNAUTHORIZED='0' 설정; Go는 커스텀 tls.Config{InsecureSkipVerify: true} 생성; PHP는 CURLOPT_SSL_VERIFYPEER=false와 CURLOPT_SSL_VERIFYHOST=0 설정; Java OkHttp는 커스텀 TrustManager가 필요(코드가 길어 주석으로 기재); C#은 ServerCertificateCustomValidationCallback 커스터마이징 가능; PowerShell은 -SkipCertificateCheck 사용(PS6+); wget은 --no-check-certificate 사용; 브라우저 fetch는 인증서를 건너뛸 수 없음(브라우저 보안 제한, 코드에 주석 추가). 참고: 이러한 설정은 로컬 개발/테스트 전용입니다. 프로덕션 환경에서는 절대 인증서 검증을 비활성화하지 마세요.

생성된 Go 코드가 왜 리디렉션을 따라가지 않나요? -L을 추가했는데 따라가야 하지 않나요?

Go의 net/http 기본 동작은 리디렉션을 따라가지 않는 것입니다(curl 기본 동작과 동일——curl은 명시적으로 -L을 추가해야 따라갑니다). 도구가 -L 매개변수를 감지하면 빈 client(http.Client{}, 기본 CheckRedirect가 nil로 10회 리디렉션 따라감)를 생성; -L이 없으면 CheckRedirect가 http.ErrUseLastResponse를 반환하는 client를 생성하여 리디렉션을 따라가지 않습니다(curl에 -L이 없을 때 동작과 일치). Go에서 항상 리디렉션을 따라가게 하려면 코드에서 직접 http.DefaultClient 또는 커스텀 Client{Timeout: ...}을 사용하세요.

로그인/쿠키가 필요한 요청은 어떻게 처리하나요?

두 가지 방법이 있습니다: ①로그인된 브라우저의 DevTools에서 직접 curl 복사(권장): 요청을 마우스 오른쪽 버튼으로 클릭→Copy as cURL, 이렇게 하면 cookie/헤더가 자동으로 포함되어 붙여넣고 변환하면 바로 실행 가능; ②curl에서 -b/--cookie를 사용하여 수동으로 쿠키 값 지정(-b 'sessionid=abc; token=xyz'), -u/--user로 Basic 인증 지정, -H "Authorization: Bearer xxx"로 Bearer Token 지정, 도구는 이러한 헤더를 그대로 변환합니다. 참고: 브라우저에서 복사한 쿠키는 유효 기간이 있으며 몇 시간 후 만료될 수 있으므로 다시 복사해야 합니다.

왜 Python requests에서 JSON 본문에 data=가 아닌 json= 매개변수를 사용하나요?

Python requests 라이브러리의 data 매개변수는 dict를 application/x-www-form-urlencoded로 인코딩하고 문자열을 그대로 전송하는 반면, json 매개변수는 dict/리스트를 JSON 문자열로 자동 직렬화하고 Content-Type: application/json 헤더를 자동으로 설정합니다(수동으로 설정하지 않은 경우). 본 도구는 Content-Type에 application/json이 포함되고 본문이 유효한 JSON임을 감지하면 JSON을 Python dict로 자동 파싱하여 json= 매개변수를 사용합니다——이렇게 하면 코드가 더 간결해지고 수동 json.dumps가 필요 없으며 Content-Type 헤더를 잊어버리지 않습니다. JSON이 아닌 본문(폼/XML/일반 텍스트)은 data= 매개변수를 사용하여 원시 문자열을 전송합니다.

curl 명령어가 길고 헤더가 많은데 생성된 코드에 모든 헤더가 포함되면 어떻게 해야 하나요?

DevTools에서 복사한 curl 명령어에는 브라우저가 자동으로 추가하는 많은 헤더(Host, Connection, Accept, Accept-Encoding, Accept-Language, Sec-Fetch-*, sec-ch-ua, Upgrade-Insecure-Requests 등)가 포함됩니다. 이러한 헤더의 대부분은 코드에서 명시적으로 설정할 필요가 없습니다(HTTP 클라이언트가 Accept-Encoding, Connection, Host, Content-Length 등 적절한 기본값을 자동으로 추가합니다). 생성된 코드를 복사한 후 불필요한 헤더를 수동으로 삭제하는 것을 권장합니다. 적어도 다음 것은 남겨두세요: Content-Type, Authorization, 쿠키(필요한 경우), 커스텀 비즈니스 헤더. 불필요한 헤더는 코드를 보기 어렵게 할 뿐만 아니라 비정상적인 동작을 유발할 수 있습니다(예: Accept-Encoding을 명시적으로 설정하면 클라이언트가 자동 압축 해제하지 않는 등).

HTTPS 프록시(-x/--proxy) 매개변수를 지원하나요?

HTTP 프록시(-x/--proxy) 매개변수는 현재 자동 변환되지 않습니다. 프록시 설정은 언어마다 크게 다릅니다(JS fetch에는 네이티브 프록시 지원이 없어 Agent가 필요, Python은 proxies= 매개변수 사용, Go는 Transport.Proxy 경유, PHP는 CURLOPT_PROXY 사용, C#은 WebProxy 사용, Java는 OkHttpClient.Builder().proxy() 사용). 프록시 헤더(프록시 자체 인증)도 별도로 처리해야 합니다. 현재 버전에서는 프록시 관련 매개변수가 무시됩니다. 생성된 코드에 수동으로 프록시 설정을 추가할 수 있습니다. 향후 버전에서 프록시 지원을 강화할 예정입니다.

curlconverter.com 등 온라인 도구와 비교하면 어떤 차이가 있나요?

curlconverter.com 등 유명 도구와 비교하여 GeekFormat의 curl-to-code 장점: ①완전 로컬 처리(curlconverter 처리 로직은 서버 측 또는 클라이언트 측)——데이터를 업로드하지 않아 더 안전; ②한국어 인터페이스와 한국어 설명, 한국 개발자에게 친숙; ③생성되는 코드가 실제 프로덕션 사용에 더 적합(예: Python requests에서 JSON 본문에 data=가 아닌 json= 매개변수 사용, Go 기본 동작을 curl에 맞춤, C#에서 Content-Type을 application/json으로 하드코딩하지 않고 올바르게 처리); ④포괄적인 문서, FAQ, 대조표, 트러블슈팅——단순한 코드 생성이 아닌 왜 그렇게 작성하는지 이해를 도움; ⑤무료이고 광고 없으며, 회원가입/로그인 불필요, 네트워크 요청 없이 사용 가능.

术语表

cURL / curl
오픈소스 명령줄 도구이자 libcurl 라이브러리. 명령줄에서 URL을 통해 HTTP/HTTPS/FTP 등 프로토콜 요청을 전송하기 위한 것으로, 개발자가 API를 디버깅하는 가장 일반적인 도구.
HTTP 메서드
HTTP 요청 동작. 일반적인 것: GET(읽기), POST(생성), PUT(전체 업데이트), PATCH(부분 업데이트), DELETE(삭제), HEAD(헤더 가져오기), OPTIONS(서버 기능 조회).
요청 헤더(Header)
HTTP 요청의 메타데이터 키-값 쌍. Content-Type, Authorization, User-Agent, 쿠키, Accept 등. curl에서 -H/--header로 지정.
요청 본문(Body)
HTTP 요청의 데이터 부분. POST/PUT/PATCH에서 자주 사용되며 curl에서 -d/--data/--data-binary/-F로 지정. 일반적인 형식: JSON, form-urlencoded, multipart/form-data.
Content-Type
본문의 미디어 유형을 나타내는 요청/응답 헤더. application/json은 JSON, application/x-www-form-urlencoded는 URL 인코딩 폼, multipart/form-data는 파일 업로드 폼.
Basic 인증
HTTP 기본 인증. Authorization: Basic base64(user:pass) 헤더로 사용자 이름과 비밀번호를 전달합니다. curl에서 -u user:pass로 지정.
Bearer Token
토큰 기반 인증 방식. Authorization: Bearer <token> 헤더로 전달하며 JWT/OAuth2에서 일반적으로 사용.
User-Agent
클라이언트 유형(브라우저/크롤러/스크립트)을 식별하는 요청 헤더. curl은 기본적으로 "curl/버전번호"를 전송합니다. 많은 웹사이트가 비브라우저 UA를 차단하므로 -A로 지정하는 것이 일반적.
쿠키(Cookie)
서버가 Set-Cookie로 전송하고 브라우저가 후속 요청에서 Cookie 헤더로 반환하는 키-값 쌍으로 세션 유지에 사용. curl -b로 쿠키 전송, -c로 쿠키 저장.
Referer
현재 요청의 출처 페이지 URL을 나타내는 요청 헤더. 일부 핫링크 방지/CSRF 검사에서 확인. curl -e로 설정.
리디렉션(3xx)
서버가 301/302/303/307/308 상태 코드를 반환하여 브라우저에 새 URL로 이동하도록 지시하는 것. curl은 기본적으로 따라가지 않으며 -L/--location을 추가하면 따라갑니다.
--compressed
curl 옵션. Accept-Encoding: deflate, gzip 헤더를 자동으로 추가하고 응답을 자동으로 압축 해제. 설정하지 않으면 응답이 깨진 압축 데이터가 될 수 있음.
-k/--insecure
curl 옵션. HTTPS 인증서 검증을 건너뜁니다. 자체 서명 인증서 테스트 환경에서만 사용하고 프로덕션 환경에서는 사용 금지.
fetch API
브라우저 네이티브 JavaScript HTTP 요청 API. Promise를 반환하며 모든 모던 브라우저에서 지원.
Axios
Promise 기반 인기 HTTP 클라이언트 라이브러리. 브라우저와 Node.js 범용, 자동 JSON 직렬화, 인터셉터, 타임아웃 취소.
OkHttp
Square사에서 만든 Java/Android HTTP 클라이언트 라이브러리. 고성능, HTTP/2 지원, 연결 풀, 투명한 GZIP.
HttpClient(.NET)
C#/.NET에서 권장되는 HTTP 클라이언트. System.Net.Http 네임스페이스, .NET Core/.NET 5+ 표준 API.
Invoke-RestMethod
PowerShell 3.0+ 내장 HTTP 요청 cmdlet. JSON/XML 응답을 자동으로 PowerShell 객체로 파싱.

cURL 일반 옵션과 11개 언어 대조표

Content-Type 일반 값과 curl 사용법

Chrome DevTools Copy as cURL 세 가지 형식 비교

Troubleshooting