언제 쓰나
백엔드 동료가 Slack 에 "이 API 한 번 호출해 봐" 라고 cURL 한 줄을 던졌을 때, 본 도구에 붙여넣고 fetch / axios / HTTPie 형식으로 옮긴 다음 그대로 코드에 붙입니다. PR 리뷰에서 cURL 인자를 일일이 풀어 의도를 확인할 때, 문서에 나온 cURL 예제를 자기 환경에 맞게 변환할 때도 같은 흐름.
처리 옵션
| 옵션 | 의미 | 출력 영향 |
|---|---|---|
| -X / --request | 메서드 (POST · PUT · DELETE 등) | 모든 형식 |
| -H / --header | 헤더 한 줄 (Name: Value) | 모든 형식 |
| -d / --data 외 | body | fetch / axios body, HTTPie --raw |
| -F / --form | multipart | FormData 작성 라인 미리 출력 |
| -u / --user | basic auth | 헤더 자동 변환 (axios 는 auth 옵션) |
| -G / --get | body 를 query string 으로 | URL 에 합쳐짐 |
| -b / --cookie | Cookie 헤더 | 헤더로 변환 |
| -A · -e | User-Agent · Referer | 헤더로 변환 |
| -k / --insecure | TLS 검증 무시 | 코멘트로 안내 |
출력에 영향 없는 옵션 (-L · -s · -v · -i · -o · --compressed) 은
조용히 무시.
shell quoting
자체 tokenizer 가 처리:
- single quote (
'...') — 안의 모든 문자 literal (backslash 도) - double quote (
"...") — backslash escape (\"\\\$```) - 줄 끝
\+ newline — 같은 줄로 합침 (Bash · zsh) - 줄 끝
^+ newline — Windows 셸 continuation
복잡한 JSON body 가 single quote 로 감싸져 있어도 안전하게 보존됩니다.
body 처리 정책
JSON body 를 자동으로 객체로 풀지 않습니다. 가장 안정적인 방법은
원본을 string 으로 그대로 보내는 것 — fetch 와 axios 모두 string
body + 적절한 Content-Type 이면 정확히 전송. 객체로 받고 싶다면
JSON.parse(...) 로 직접.
fetch · axios · HTTPie 차이
- fetch — Web 표준. Node 18+ 도 내장. 외부 lib 없음. basic auth 는 Authorization 헤더에 base64 로 직접.
- axios —
import axios from 'axios'필요. basic auth · query · baseURL 등 옵션이 풍부 — 본 도구는auth: '{' username, password '}'옵션 형태로 출력. - HTTPie — CLI. 셸에서 직접 실행. 출력은
\continuation 으로 여러 줄 분할 — 그대로 셸에 붙여넣기 가능.
보안
cURL 안에 인증 토큰 · API 키 · cookie 가 들어 있어도 페이지 밖으로 나가지 않습니다. shell tokenizer · header parser · 출력 generator 모두 클라이언트 자바스크립트 — 외부 호출 0KB.
안 맞는 경우
- gRPC · WebSocket · SSE — cURL 영역이 아니거나 별도 처리.
- OAuth flow 자동화 — refresh token · code exchange 단계는 별개. 본 도구는 단일 요청 변환.
- 인증 헤더의
Bearer토큰 갱신 — 출력 코드는 정적. 토큰 갱신 로직은 사용자가 추가.
cURL 명령은 페이지 안에서만
cURL 안에 인증 토큰 · API 키 · Authorization 헤더 · cookie 가 들어 있어도 안전. shell tokenizer · header parser · 출력 generator 모두 클라이언트 자바스크립트 — 외부 요청 0KB.