무엇을 하나
요청의 메서드 · 헤더 · 본문 · 인증 · 옵션을 고르면 curl 명령 한 줄과 각 옵션의 뜻을 보여 줍니다. 값은 POSIX 셸(bash · zsh · sh)용 작은따옴표로 감싸고, 값 안의 작은따옴표는 '\'' 로 닫았다 다시 엽니다. 「명령 풀어 보기」 탭에 curl 명령을 붙여 넣으면 옵션을 하나씩 나눠 설명하고, 만들기 칸으로 다시 불러올 수 있습니다.
- 본문은
--data-raw로 보냅니다.-d는 값이@로 시작하면 파일을 읽어 버리기 때문입니다. - 폼은
--data-urlencode(값을 퍼센트 인코딩), 멀티파트는--form-string(글자 그대로) ·-F 이름=@경로(파일)로 만듭니다. - 빈 값 헤더는
-H '이름;'으로 씁니다.-H '이름:'은 curl 이 그 헤더를 빼라는 뜻입니다. - URL 에
[ ] { }가 있으면-g를 붙여 curl 의 주소 묶음 문법을 끕니다.
예시
| 고른 것 | 만들어지는 명령 |
|---|---|
POST · JSON {"a":1} | curl -H 'Content-Type: application/json' --data-raw '{"a":1}' https://api.example.com/ |
헤더 값 it's | curl -H 'X-Note: it'\''s' https://example.com/ |
| 기본 인증 alice / s3cr3t | curl -u alice:s3cr3t https://example.com/ |
| HEAD · 리다이렉트 · 10초 | curl -I -L --max-time 10 https://example.com/ |
폼 q = a&b | curl --data-urlencode 'q=a&b' https://example.com/form |
흔한 실수
-X POST -d …에-L:-X로 정한 메서드는 리다이렉트 뒤에도 그대로 갑니다. 본문이 있으면-X POST는 빼도 POST 로 갑니다(이 도구는 빼고 만듭니다).-X HEAD: 오지 않는 본문을 기다리다 멈춥니다.-I를 씁니다.- 큰따옴표로 감싼 JSON:
"…$HOME…"처럼 셸이$· ``` 을 먼저 바꿉니다. 작은따옴표로 감쌉니다. --data와-G:-G가 있으면 데이터가 본문이 아니라?쿼리로 붙습니다.
어떻게 확인했나
만든 명령 43가지를 bash 로 실제 curl 8.5.0 에 넘겨 127.0.0.1 의 작은 에코 서버로 보냈고, 서버가 받은 메서드 · 경로 · 헤더 · 본문 · 인증 값이 고른 것과 모두 같았습니다(작은따옴표 · $ · 백틱 · 한글 · 줄 바꿈이 든 값, 리다이렉트, 시간 제한 종료 코드 28 포함). 만든 옵션은 모두 curl --help all 목록에 있는지 확인했고, 풀이 쪽은 bash 의 낱말 나누기와 7가지, curl 이 실제로 보낸 요청과 12가지를 대조했습니다. 옵션 설명표는 curl 8.5.0 의 curl --help all(258개)에서 만들었습니다.
자주 묻는 것
Windows 명령 프롬프트나 PowerShell 에서도 쓰나요?
아니요. 따옴표 규칙이 달라서 이 도구의 명령은 bash · zsh · sh 같은 POSIX 셸용입니다. Windows 에서는 WSL 이나 Git Bash 에서 실행합니다. PowerShell 의 curl 은 버전에 따라 Invoke-WebRequest 의 별칭이므로 curl.exe 로 부릅니다.
브라우저 개발자 도구의 「Copy as cURL」 도 풀 수 있나요?
네. bash 용으로 복사한 명령($'…' 따옴표 포함)을 그대로 붙여 넣으면 됩니다. cmd 용(줄 끝 ^)은 풀지 못합니다. 쿠키 · 토큰이 들어 있을 수 있으니 남과 나누기 전에 지웁니다.
입력한 토큰이나 비밀번호가 서버로 가나요?
아니요. 명령은 브라우저 안에서 만들고, 입력값은 서버로 보내지 않으며 주소창 · 방문 통계 · 광고에도 넘기지 않습니다. 이 도구는 요청을 직접 보내지도 않습니다. 자세한 것은 개인정보 처리 안내에 있습니다.