cURL 변환기

cURL 변환기
개발자도구 → Network → Copy as cURL로 복사한 명령을 그대로 붙여넣으세요. 줄바꿈과 따옴표가 섞여 있어도 처리됩니다.

cURL 명령

브라우저와 Node 18+ — 의존성 없음
// Paste a cURL command on the left

브라우저 개발자도구에서 복사한 요청을 바로 동작하는 코드로 바꿉니다. cURL 명령을 붙여넣으면 fetch, axios, Python requests, Go 코드가 나오고, 그 명령이 실제로 무엇을 보내는지도 함께 정리해 줍니다.

브라우저 개발자 도구나 API 문서에서 가져온 curl 명령에는 요청에 필요한 모든 것이 들어 있지만, 그 문법 그대로는 코드에 붙지 않습니다. 손으로 옮기다 보면 헤더가 빠지고 JSON 본문의 따옴표가 깨집니다.

이 도구는 curl 명령을 fetch, axios, 파이썬 requests, Go 코드로 바꾸면서 메서드·헤더·쿼리 파라미터·본문을 그대로 유지합니다. "cURL로 복사"가 만들어 내는 여러 줄 따옴표 형태도 처리합니다. Authorization 헤더와 쿠키도 그대로 옮겨지므로, 결과를 공유되는 곳에 붙여 넣기 전에 한 번 확인하는 편이 좋습니다.

cURL로 복사 기능의 가치는 실제로 성공한 요청을 헤더까지 통째로 담아 준다는 데 있습니다. 그것이 곧 위험이기도 합니다. 그렇게 만들어진 명령에는 브라우저가 보낸 모든 쿠키와 Authorization 헤더, 만료 전까지 살아 있는 세션 식별자가 들어 있습니다. 그것을 채팅이나 티켓, 공개 이슈에 붙여넣는 것은 그 자격 증명이 여는 모든 것을 넘겨주는 일입니다. 여기서 변환한 결과도 마찬가지입니다. 같은 값이 그대로 들어가므로, 공유되는 곳으로 코드를 옮기기 전에 지우는 편이 좋습니다.

손으로 옮길 때 대개 어긋나는 지점은 셸 인용 부호입니다. 작은따옴표 안의 JSON 본문은 문자 그대로라서 달러 기호나 백틱이 아무 의미도 갖지 않지만, 같은 본문을 큰따옴표로 감싸면 curl이 보기도 전에 셸이 먼저 치환합니다. 역슬래시로 이어 붙인 여러 줄 명령은 해석 전에 다시 합쳐야 하고, 윈도우는 줄 이음 문자도 인용 규칙도 다릅니다. 한 기계에서 복사한 명령이 다른 기계에서 실패하는 이유입니다. 패턴으로 대충 맞추지 않고 명령을 제대로 파싱하는 것이 본문을 온전히 옮기는 방법입니다.

옮겨 갈 언어마다 고유한 관용이 있고, 기계적 번역이라도 그것을 지켜야 합니다. fetch 는 JSON 콘텐츠 타입을 대신 붙여 주지 않고 4xx나 5xx 응답에서 예외를 던지지도 않으므로, 생성된 코드는 상태 코드를 명시적으로 확인합니다. axios 는 기본적으로 JSON을 파싱하고 오류 상태에서 거부하는, 정반대의 관례를 따릅니다. Python requests 는 직접 직렬화한 문자열 대신 json= 을 받고, Go 는 본문을 리더로 감싼 요청 객체를 따로 만들어야 합니다. 출력은 curl 옵션을 일대일로 옮기는 대신 각 언어의 방식을 따릅니다.

cURL 변환기 사용법

  1. 브라우저에서 개발자도구 → Network를 열고 요청을 우클릭해 Copy → Copy as cURL을 누릅니다.
  2. 왼쪽에 붙여넣습니다. 백슬래시로 줄이 이어진 여러 줄 명령도 그대로 처리됩니다.
  3. 해석된 요청에서 메서드, URL, 쿼리스트링, 헤더, 본문이 예상과 맞는지 확인합니다.
  4. fetch, axios, Python, Go, 정규화된 cURL 중에서 탭을 고르고 코드를 복사합니다.

알아두면 좋은 점

  • 코드가 필요 없을 때도 해석된 요청 패널은 볼 만합니다. 긴 URL에서 쿼리스트링을 떼어내고 헤더를 한 줄씩 나열해 주므로 Content-Type이 잘못된 경우가 바로 눈에 띕니다.
  • 따옴표 방식을 가리지 않아서 윈도우 cmd에서 복사한 것과 유닉스 셸에서 복사한 것 모두 해석됩니다.
  • 요청 내용에 영향을 주지 않는 -s, -v, --compressed 같은 플래그는 URL로 오인하지 않고 인식한 뒤 무시합니다.
  • JSON 본문은 생성된 코드에서 보기 좋게 정렬되며, Python 대상에서는 True/False/None으로 바꿔 줍니다.

자주 묻는 질문

헤더나 토큰이 전송되나요?

아니요. 해석과 코드 생성이 전부 브라우저 안에서 이루어지므로 붙여넣은 명령의 Authorization 헤더가 기기 밖으로 나가지 않습니다. 다만 어떤 도구든 운영 토큰을 붙여넣는 것은 조심하는 편이 좋습니다.

파일 업로드도 되나요?

-F/--form 필드는 해석해서 자바스크립트에서는 FormData로, Python에서는 files=로 만들어 줍니다. 다만 cURL 명령만으로는 실제 파일 내용을 복원할 수 없으므로 파일 자체는 코드에서 직접 붙여야 합니다.

Basic 인증이 왜 btoa(...)로 나오나요?

무엇이 인코딩되는지 보이고 변수로 바꾸기 쉽게 하기 위해서입니다. Python과 Go에서는 각 언어의 관용적인 방식인 auth=()와 req.SetBasicAuth()를 씁니다.