Menu

cURL 변환기

curl 명령을 fetch, axios, Python requests, Go, PHP 등으로 변환합니다.

마지막 업데이트

curl 명령어 붙여넣기curl 명령어를 붙여넣어 시작
JavaScript (fetch)
위에 curl 명령어를 붙여넣으면 12개 언어로 코드를 생성합니다.

cURL 변환기란?

cURL 변환기는 모든 API 문서, Postman 내보내기, AI 어시스턴트가 내보내는 형식인 curl 명령어를 실제 사용하는 프로그래밍 언어의 붙여넣기만 하면 되는 코드로 바꿔 줍니다. 헤더, 쿼리 문자열, JSON 바디, 멀티파트 업로드, 기본 인증, 쿠키까지 그대로 옮겨지므로 요청을 손으로 다시 작성할 필요가 없습니다.

curl은 HTTP 요청을 표현하는 가장 보편적인 방법이지만, 실제 운영 환경에서 curl을 직접 *실행*하는 경우는 드뭅니다. 보통은 JavaScript fetch, Python requests, Go의 net/http, 또는 사용 중인 스택의 도구를 씁니다. 이 도구가 그 간극을 메워 줍니다 — curl을 붙여넣고, 탭을 클릭하고, 코드를 복사하면 됩니다.

모든 처리는 브라우저 안에서 로컬로 이루어집니다. curl 명령어, 헤더, 토큰은 절대 사용자의 기기를 떠나지 않습니다 — 실제 베어러 토큰이나 세션 쿠키가 포함된 명령어를 붙여넣을 때 특히 유용하죠.

변환하면서 자연스럽게 익히게 되는 것들

  • curl 플래그는 모든 HTTP 클라이언트에서 특정 개념과 짝지어집니다: -H는 요청 헤더, -d는 바디, -X는 메서드, -u는 기본 인증, -F는 멀티파트 폼 필드입니다.
  • curl이 바디(-d, --data, -F)를 보는데 -X가 없으면 기본값은 POST입니다 — 대부분의 클라이언트가 쓰는 기본값과 같기 때문에, -X가 지정되지 않아도 결과 코드에서는 POST가 됩니다.
  • JSON 바디와 폼 바디는 다릅니다. Content-Type: application/json은 바디가 그대로 전송된다는 뜻이고, application/x-www-form-urlencoded는 키/값 쌍이 &로 이어진다는 뜻입니다.

curl을 코드로 변환하는 방법

  1. curl 명령어 붙여넣기

    복사해 온 문서에서 흔히 보이는 \ 줄바꿈 표시까지 포함해 전체 명령어를 입력창에 넣으세요. 파서가 스마트 따옴표와 PowerShell 프롬프트 표시를 자동으로 정리합니다.

  2. 대상 언어 고르기

    탭에는 JavaScript fetch, TypeScript, Node axios, Python requests, Python httpx, Go, PHP, Ruby, Java HttpClient, C# HttpClient, HTTPie, PowerShell이 준비돼 있습니다. 탭을 옮기는 비용은 사실상 없습니다 — 파싱은 한 번만 실행됩니다.

  3. 파싱된 요청 확인하기

    *Parsed request* 패널을 열어 메서드, URL, 헤더, 바디 종류, 그리고 insecurefollow redirects 같은 옵션이 의도대로 옮겨졌는지 확인하세요.

  4. 복사한 뒤 인증 정보 정리하기

    생성된 코드를 프로젝트에 복사해 넣으세요. curl에 베어러 토큰이나 쿠키가 들어 있었다면, 커밋하기 전에 그 값을 환경 변수로 바꿔 두세요.

cURL 플래그 빠른 참고

이 변환기가 이해하는 플래그와 그것들이 생성된 코드에서 어떤 의미로 옮겨지는지 정리했습니다.

플래그의미예시
-X, --requestHTTP 메서드-X POST
-H, --header요청 헤더 (여러 번 사용 가능)-H 'Accept: application/json'
-d, --data요청 바디 — 기본적으로 URL 인코딩-d 'name=Ada&age=30'
--data-raw@file 전개 없이 바디 전송--data-raw '$body'
--data-urlencode바디의 일부를 퍼센트 인코딩--data-urlencode 'q=hello world'
-F, --form멀티파트 폼 필드 (파일은 @file 사용)-F 'avatar=@photo.jpg'
-u, --user기본 인증 → Authorization: Basic …-u alice:s3cret
-G, --get바디를 쿼리 문자열로 올려 GET으로 전송-G -d 'q=ada'
-b, --cookieCookie 헤더-b 'session=abc'
-A, --user-agentUser-Agent 헤더-A 'MyApp/1.0'
-L, --location3xx 리다이렉트 따라가기-L
-k, --insecureTLS 검증 건너뛰기 (개발용으로만!)-k
--compressedgzip/deflate/br 응답 수락--compressed
--max-time전체 요청 타임아웃(초)--max-time 30

cURL 변환 예시

쿼리 문자열과 인증 헤더가 포함된 GET

curl
curl 'https://api.example.com/v1/lessons?limit=20&track=python' \  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.demo'
JavaScript (fetch)
const response = await fetch('https://api.example.com/v1/lessons?limit=20&track=python', {  method: 'GET',  headers: {    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiJ9.demo'  }});const data = await response.json();

URL에 포함된 쿼리 파라미터는 URL에 그대로 남아 있습니다 — 변환기가 fetch용으로 별도의 params 객체로 다시 쪼개지는 않습니다. axios와 requests에서는 가독성을 위해 params / params=로 들려 올려진 모습을 볼 수 있습니다.

JSON 바디로 POST 보내기

curl
curl 'https://api.example.com/v1/users' \  -H 'Content-Type: application/json' \  --data-raw '{"name":"Ada","age":36}'
Python (requests)
import requests
headers = {    'Content-Type': 'application/json',}json_data = {"name":"Ada","age":36}
response = requests.post('https://api.example.com/v1/users', headers=headers, json=json_data)response.raise_for_status()

바디가 JSON으로 파싱되고 Content-Typeapplication/json이면, 변환기는 requests에는 json=, axios에는 data:(파싱된 객체)를 출력합니다. JSON.parse가 실패하면 원래의 리터럴 문자열을 그대로 보존합니다 — 절대 다시 쓰지 않습니다.

멀티파트 파일 업로드

curl
curl 'https://api.example.com/upload' \  -F 'caption=Hello' \  -F 'photo=@./avatar.jpg'
Python (requests)
import requests
files = {    'caption': (None, 'Hello'),    'photo': open('./avatar.jpg', 'rb'),}
response = requests.post('https://api.example.com/upload', files=files)response.raise_for_status()

-F field=@file은 실제 파일 업로드로 옮겨집니다(Python에서는 open('…', 'rb'), JavaScript에서는 FormData.append). 일반 -F 필드는 평범한 폼 값이 됩니다. 브라우저 미리보기에서는 실행 시점에 직접 채워 줘야 하는 파일 blob 자리에 TODO 플레이스홀더가 표시됩니다.

기본 인증 + 쿠키

curl
curl 'https://api.example.com/me' \  -u alice:s3cret \  -b 'session=2f9a; theme=dark'
JavaScript (fetch)
const response = await fetch('https://api.example.com/me', {  method: 'GET',  headers: {    'Authorization': 'Basic YWxpY2U6czNjcmV0',    'Cookie': 'session=2f9a; theme=dark'  }});

기본 인증은 단일 Authorization 헤더로 합쳐집니다. 쿠키는 ; 로 이어 붙여 하나의 Cookie 헤더로 보내집니다 — 실제 네트워크상에서 curl이 보내는 모습과 같습니다.

curl을 변환할 때 자주 하는 실수

  • 블로그에서 가져온 curl을 스마트 따옴표(', ', ", ")가 그대로 붙은 채 붙여넣는 것 — 따옴표처럼 보이지만 셸 파싱이 깨집니다. 변환기가 이를 정리해 주긴 하지만, 가능하면 원본 명령어를 그대로 복사하세요.
  • 운영 환경에 -k(--insecure)를 남겨 두는 것. TLS 인증서 검증을 끄는 옵션이라 로컬 개발에서는 괜찮지만 실제 트래픽에서는 위험합니다.
  • --data-raw--data의 동작이 다르다는 사실을 잊는 것 — --data는 입력을 URL 인코딩합니다. @&가 들어간 JSON 바디에는 --data-raw를 쓰세요.

cURL 변환기 자주 묻는 질문

이 변환기는 어떤 언어를 지원하나요?
기본으로 12개 대상이 준비돼 있습니다: JavaScript (fetch), TypeScript (fetch), Node (axios), Python (requests), Python (httpx), Go (net/http), PHP (curl), Ruby (Net::HTTP), Java (HttpClient), C# (HttpClient), HTTPie, PowerShell (Invoke-RestMethod). 모두 같은 파싱 결과로부터 생성되므로 탭 전환은 즉시 이루어집니다.
멀티파트 업로드와 -F 플래그도 처리하나요?
네. -F field=value는 일반 폼 필드가 되고, -F file=@pathFormData(JS), files=(Python), CURLFile(PHP) 같은 방식으로 실제 파일 업로드가 됩니다. 파일 경로는 TODO 플레이스홀더로 표시되며, 실행 시점에 File, Buffer, 스트림 등으로 직접 연결해 주면 됩니다.
제 curl 명령어가 서버로 전송되나요?
아니요. 파서와 모든 코드 생성기가 브라우저 안에서 동작합니다. 베어러 토큰, 쿠키, 요청 바디는 절대 사용자의 기기를 떠나지 않습니다 — 기본적으로 *Parsed request* 미리보기에서도 마스킹 처리됩니다.
Windows에서 가져온 curl은 왜 모양이 달라 보이나요?
Windows의 curl.exe(그리고 CMD/PowerShell)는 줄바꿈 표시로 ^나 백틱 \`을 쓰고 문자열을 감싸는 방식도 다를 수 있습니다. 변환기가 흔한 Windows 패턴은 자동으로 정리해 주지만, 붙여넣은 결과가 이상해 보이면 명령어를 한 줄로 합쳐서 다시 복사해 보세요.
GraphQL 요청도 지원하나요?
네 — GraphQL 요청은 queryvariables가 담긴 JSON 바디를 가진 POST 요청일 뿐입니다. curl을 붙여넣으면 변환기가 대상 언어에서 평범한 JSON POST를 출력합니다. 응답 형태({ data, errors })는 다른 GraphQL 클라이언트에서와 똑같이 다루면 됩니다.
Postman에서 내보낸 curl도 붙여넣을 수 있나요?
네. Postman의 *Code → cURL* 내보내기는 여러 줄에 걸친 \ 포맷까지 모두 지원됩니다. Chrome과 Firefox 개발자 도구의 *Copy as cURL*로 만든 curl도 마찬가지입니다.
fetch와 axios — 어떤 출력을 골라야 하나요?
프로젝트에 이미 fetch가 있다면 fetch를 쓰세요(브라우저와 최신 Node에 기본 내장돼 있습니다). 자동 JSON 파싱, 요청 인터셉터, 재시도, 진행 이벤트 같은 기능이 필요하다면 axios를 쓰세요 — fetch가 기본으로 제공하지 않는 기능들이죠.

자세히 알아보기

다른 개발자 도구

Coddy programming languages illustration

Coddy로 코딩 배우기

시작하기