curl을 코드로 변환

curl 명령어를 fetch, Node.js, Python requests, Go net/http, PHP 코드로 변환하고 axios·http.client·Guzzle도 고를 수 있습니다 — -X·-H·-d·-F·-u 플래그와 bash 인용부호·줄바꿈까지 해석합니다.

결과 10줄, 244자

curl 명령어를 다섯 언어의 코드로

이 도구는 curl 명령어를 분석해 선택한 언어의 동등한 소스 코드로 다시 작성합니다 — JavaScript fetch() 호출, 내장 http/https 모듈을 사용하는 Node.js 요청, Python requests 스크립트, Go net/http 프로그램, PHP cURL 스니펫 중에서 고를 수 있습니다. Node.js·Python·PHP는 라이브러리 선택에서 axios, 표준 라이브러리의 http.client, Guzzle을 두 번째 선택지로 고를 수 있으며, 모두 curl처럼 동작하도록 설정해 오류 상태 코드도 예외가 아니라 응답으로 돌아옵니다. 복사한 명령어에 자주 등장하는 플래그를 해석합니다. 메서드는 -X/--request, 헤더는 -H/--header, 요청 본문은 -d/--data/--data-raw, 그리고 -u user:pass는 Basic Authorization 헤더로 변환합니다. 여기에 더해 -F/--form 멀티파트 필드와 파일 업로드, 파일을 PUT으로 올리는 -T, 그리고 생성된 코드가 실행될 때 파일(표준 입력이면 @-)에서 본문을 읽는 -d @파일도 읽습니다. 따옴표로 감싼 인자, 백슬래시 줄바꿈, 여러 줄 붙여넣기도 모두 처리하므로 브라우저의 "cURL로 복사" 결과를 그대로 붙여넣을 수 있습니다. bash의 $'...' 따옴표도 읽으며, Windows에서는 cmd용이 아니라 bash(POSIX)용으로 복사하세요(cmd의 ^ 이스케이프는 읽지 않습니다). URL·헤더·본문에 있는 $TOKEN 같은 셸 변수는 생성된 프로그램이 실행 환경에서 읽도록(process.env, os.environ, os.Getenv, getenv) 바꾸고, $(…) 명령은 실행하지 않고 적힌 그대로 보내며, curl 명령 앞뒤의 파이프·리디렉션·다른 명령은 빼고 변환합니다. 페이지가 그 하나하나를 알려 줍니다.

사용 방법

curl 명령어를 입력창에 붙여넣고 대상 언어를 고르면 생성된 코드가 아래에 바로 나타나 복사하거나 내려받을 수 있습니다. 본문이 없으면 메서드는 GET, -d만 있으면 POST, -I는 HEAD가 되고 -G는 -d 데이터를 쿼리 문자열로 옮겨 curl의 동작과 일치합니다. 모든 처리는 브라우저 안에서 이루어지므로 API 토큰이나 자격 증명이 담긴 명령어도 안전하게 변환할 수 있습니다. 이 도구는 curl 명령어 빌더와 정확히 반대 방향으로 동작하며, 빌더에서 명령어를 만들거나 여기에 붙여넣어 동작하는 코드를 얻을 수 있습니다.

자주 묻는 질문

어떤 curl 플래그를 지원하나요?

복사한 명령어에서 자주 쓰는 플래그를 지원합니다. HTTP 메서드는 -X/--request, 헤더는 -H/--header, 본문은 -d/--data/--data-raw(및 --data-binary), --url, Basic Authorization 헤더가 되는 -u user:pass, HEAD 요청인 -I/--head, -d 데이터를 쿼리 문자열로 보내는 -G/--get, 그리고 Cookie 헤더가 되는 -b/--cookie의 name=value 값입니다. -F/--form과 --form-string은 멀티파트 본문을 만들고 name=@파일은 파일 업로드가 되며, -T는 파일을 PUT으로 올리고, -d @파일이나 @-는 코드가 실행될 때 파일이나 표준 입력에서 본문을 읽습니다. 함께 옮길 수 없는 조합(-d와 함께 쓴 -F, 어느 쪽과든 함께 쓴 -T)은 조용히 버리지 않고 페이지에 알려 줍니다. --compressed는 fetch·requests 등이 압축을 알아서 처리하므로 받아들이되 무시하고, -s·-L·-k 같은 불리언 플래그는 안전하게 건너뜁니다.

Node.js 코드는 무엇을 사용하나요?

URL이 http면 http, 그 밖에는 https 모듈을 골라 Node 내장 모듈만 씁니다. npm 패키지를 따로 설치할 필요가 없습니다. 프로젝트에서 axios를 쓴다면 라이브러리 선택에서 axios를 고르세요. fetch가 더 편하면 Node 18부터 전역 fetch()가 들어 있으므로 JavaScript(fetch) 출력도 최신 Node에서 그대로 돌아갑니다.

axios나 http.client, Guzzle 코드로도 받을 수 있나요?

네. Node.js·Python·PHP를 고르면 언어 옆에 라이브러리 선택이 나옵니다 — Node.js는 http / https나 axios, Python은 requests나 http.client, PHP는 cURL이나 Guzzle입니다. 모두 curl처럼 동작하게 씁니다. axios는 본문을 텍스트로 돌려주고 오류 상태 코드에도 예외를 던지지 않으며, Guzzle은 http_errors를 끄고, http.client는 기본값인 Latin-1이 아니라 UTF-8로 본문을 보냅니다. 고른 라이브러리는 페이지 주소에 ?lib=로 남아 링크를 열면 같은 코드가 나오고, 언어를 바꾸면 그 언어의 기본 라이브러리로 돌아갑니다.

요청을 .http 파일, HTTPie, Wget, JSON, HAR로도 받을 수 있나요?

네. 대상 언어 메뉴에서 프로그래밍 언어 아래의 그 밖의 형식 묶음에 있습니다. HTTP (.http file)는 VS Code의 REST Client와 JetBrains가 실행하는 형식의 HTTP 메시지로 쓰며, 파일에서 읽는 본문은 < 경로로 적습니다. HTTPie와 Wget은 같은 요청을 그 클라이언트의 명령어로 쓰는데, Wget은 멀티파트 폼을 보낼 수 없어 그런 요청은 주석으로 거절합니다. JSON (parsed request)은 이 도구가 읽어 낸 요청을 보여 주고, HAR (request object)은 HAR의 request 객체를 씁니다. HAR 항목에는 응답도 필요하지만 실행하지 않은 명령어에는 응답이 없으므로 요청만 담습니다.