본문 바로가기

로딩 중...


cURL 변환기

API 문서에 적힌 curl 예제나 브라우저 개발자 도구에서 "Copy as cURL"로 복사한 명령을, 실제 코드에 붙여 쓰려면 손으로 다시 옮겨 적어야 합니다. cURL 변환기는 그 curl 명령을 붙여넣으면 JavaScript(fetch·axios), Python(requests), Node.js, Go의 HTTP 요청 코드로 바로 바꿔 주는 도구입니다. 메서드, 헤더, 요청 바디, Basic 인증까지 읽어 내서 언어별 관용적인 형태로 만들어 줍니다.

새 API를 붙일 때마다 curl로 먼저 두들겨 보고, 되는 걸 확인한 다음 코드로 옮기는 흐름을 반복하다 보니 그 옮겨 적는 과정이 매번 지루했습니다. 헤더 순서를 빠뜨리거나 JSON 바디의 따옴표를 잘못 이스케이프해서 삽질한 적도 많았고요. 그래서 curl을 붙여넣으면 여러 언어를 탭으로 한 번에 보고 필요한 걸 복사하도록, 제가 쓰려고 만들었습니다.

사용 방법

지원하는 형식

입력에는 한 줄짜리 curl이든, 줄 끝을 \로 이어 붙인 여러 줄 curl이든 그대로 넣을 수 있습니다. -X/--request(메서드), -H/--header(헤더), -d/--data류(바디), -u(Basic 인증), -b/--cookie, --compressed 같은 옵션을 읽어 냅니다. 출력은 JavaScript(fetch), JavaScript(axios), Python(requests), Node.js(fetch), Go(net/http) 다섯 가지를 탭으로 제공하며, 요청 바디가 JSON이면 각 언어에 맞는 객체 리터럴로 풀어 줍니다.

  1. 왼쪽 입력창에 curl 명령을 붙여넣습니다. 뭘 넣어야 할지 막막하면 샘플 버튼을 눌러 예시로 시작해도 됩니다.

    cURL 변환기-guide-1

  2. 붙여넣는 즉시 오른쪽에 변환된 코드가 나옵니다. 기본은 JavaScript(fetch)이고, 복사 버튼으로 바로 가져갈 수 있습니다.

    cURL 변환기-guide-2

  3. 상단 탭에서 Python(requests)이나 Go(net/http) 등 원하는 언어로 바꾸면 같은 요청이 그 언어의 코드로 다시 그려집니다.

    cURL 변환기-guide-3

메서드와 바디는 이렇게 추론합니다

-X로 메서드를 지정하지 않았더라도, -d로 데이터를 넘겼다면 POST로, 아무 데이터도 없으면 GET으로 잡습니다. 요청 바디는 Content-Type이 JSON이거나 내용이 {·[로 시작하면 JSON으로 인식해서, fetch에서는 JSON.stringify(...), Python에서는 json= 파라미터처럼 각 언어가 기대하는 방식으로 넣어 줍니다. JSON이 아니면 문자열 그대로 바디에 담습니다.

Basic 인증과 여러 줄 명령

-u user:pass로 넘긴 Basic 인증은 각 언어에서 Authorization: Basic ... 헤더(또는 Python의 auth= 튜플)로 변환됩니다. 브라우저에서 복사한 curl은 보통 헤더마다 줄을 나눠 \로 이어 붙는데, 이런 여러 줄 명령도 한 덩어리로 읽어 내므로 복사한 그대로 붙여넣으면 됩니다.

자주 묻는 질문

curl 명령을 붙여넣으면 정말 서버로 전송되나요?

아닙니다. cURL 변환기는 붙여넣은 curl 명령을 브라우저 안에서 문자열로 파싱해 코드로 만들 뿐, 실제로 그 요청을 보내거나 curl 내용을 서버로 전송하지 않습니다. 토큰이나 인증 정보가 담긴 명령도 안심하고 붙여넣을 수 있습니다.

어떤 언어로 변환할 수 있나요?

JavaScript(fetch), JavaScript(axios), Python(requests), Node.js(내장 fetch), Go(net/http) 다섯 가지를 지원합니다. 상단 탭에서 언어를 고르면 같은 요청이 그 언어의 관용적인 코드로 다시 그려지고, 각 탭마다 복사 버튼이 있습니다.

여러 줄로 나뉜 curl 명령도 인식하나요?

네. 브라우저 개발자 도구의 "Copy as cURL"처럼 줄 끝을 백슬래시(\)로 이어 붙인 여러 줄 명령도 한 덩어리로 읽어 냅니다. 복사한 그대로 붙여넣으면 헤더와 바디를 순서대로 파싱합니다.

-X를 안 써도 메서드가 맞게 나오나요?

메서드를 명시하지 않았더라도 -d 등으로 요청 바디를 넘겼으면 POST로, 아무 데이터가 없으면 GET으로 자동 판단합니다. -X나 --request로 메서드를 직접 지정하면 그 값을 그대로 사용합니다.