본문으로 건너뛰기
Ink·tab

cURL 한 줄 → 코드

백엔드가 던진 cURL 한 줄을 fetch · axios · HTTPie 로 즉시 옮깁니다.

POSThttps://api.example.com/users· 헤더 2· body: JSON
출력 형식
JavaScript273 B
const response = await fetch('https://api.example.com/users', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer xxxxx'
  },
  body: '{"name":"홍길동","email":"hong@example.com"}'
});
const data = await response.json();
브라우저 안에서만 처리됩니다. 네트워크 전송 없음.

언제 쓰나

백엔드 동료가 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 로 직접.
  • axiosimport 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.

자주 묻는 질문

어떤 cURL 옵션이 처리되나요?
-X / --request, -H / --header, -d / --data / --data-raw / --data-binary / --data-urlencode, -F / --form (multipart), -u / --user, -G / --get, -k / --insecure, --cookie / -b, -A / --user-agent, -e / --referer. 출력에 영향 없는 옵션 (-L · -s · -v · -i · -o · --compressed) 은 무시.
JSON body 가 자동으로 객체로 풀리나요?
아니요. 본 도구는 body 를 그대로 문자열로 전달 — 가장 안정적입니다. fetch 는 Content-Type 만 맞으면 string body 그대로 전송하고, axios 도 동일. 객체로 보내고 싶으면 코드에서 JSON.parse(...) 로 직접 변환.
-F (multipart) 는 어떻게 변환되나요?
fetch · axios 는 FormData 작성 코드를 미리 출력 — `form.append(...)` 라인을 채워 두고 본 요청에서 body 로 사용. 파일 (`@/path/to/file`) 은 자리표시자 (`file`) 로 두고 사용자가 채우게 합니다. HTTPie 는 `--multipart` 플래그 + `key=value` 그대로.
-u user:pass 는 어떻게 처리되나요?
fetch 는 Authorization 헤더를 base64(user:pass) 로 자동 추가. axios 는 `auth: '{' username, password '}'` 옵션으로 분리해 출력 — axios 가 헤더 자동 작성. HTTPie 는 `--auth user:pass`.
-k / --insecure 는?
TLS 검증 무시 옵션. 브라우저 fetch 는 TLS 무시 옵션 자체가 없으므로 코멘트로 안내. Node fetch 는 NODE_TLS_REJECT_UNAUTHORIZED=0 또는 axios 의 httpsAgent 사용 — 둘 다 위험하니 production 권장 안 함.