MYMONDAY.ai
서비스스튜디오도구데이터·포맷73CSS 생성기19색상·이미지10인코딩·보안10웹·SEO11개발·데브옵스10파일·내보내기18계산기6가이드

cURL 명령 빌더

메서드, URL, 헤더, 본문을 채우면 실행 전에 읽을 수 있는 cURL 명령이 나옵니다. 플래그는 한 줄씩, 따옴표는 올바르게, 모든 플래그에는 설명이 붙습니다.

  • 브라우저에서 처리
  • 가입 없음
  • 무료

도구 작업 공간

예제

한 줄에 하나씩 Name: value 형식으로 입력하세요.

헤더 추가

--data-raw로 쓴 그대로 전송합니다.

기본적으로 curl은 301·302·303 리디렉션 뒤에 POST를 GET으로 바꿉니다.

명령

⌘/Ctrl + Enter
bash / zsh
curl \
  'https://api.example.com/v1/orders' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  --data-raw '{"sku":"A-100","quantity":2}' \
  -L \
  --compressed
  • ! -L을 쓰면 301·302·303 리디렉션 뒤에 이 POST가 GET으로 바뀝니다. POST를 그대로 반복해야 하면 "리디렉션에서 POST 유지"를 켜세요.

각 부분의 역할

  • 'https://api.example.com/v1/orders'요청할 주소입니다. &, ? 같은 문자를 셸이 해석하지 않도록 따옴표로 감쌉니다.
  • -H 'Content-Type: application/json'이 요청 헤더를 함께 보냅니다.
  • -H 'Accept: application/json'이 요청 헤더를 함께 보냅니다.
  • --data-raw '{"sku":"A-100","quantity":2}'이 텍스트를 한 글자도 바꾸지 않고 요청 본문으로 보냅니다. 본문이 있으면 curl이 알아서 POST로 보냅니다.
  • -L첫 응답에서 멈추지 않고 리디렉션(Location 헤더)을 따라갑니다.
  • --compressed서버에 gzip·brotli 응답을 요청하고 받은 뒤 압축을 풉니다.

헤더와 본문은 이 탭 안에만 머뭅니다. 자격 증명이 들어가는 경우가 많아 이 도구에는 공유 링크가 없습니다.

cURL 명령 빌더는 cURL에서 가장 자주 틀리는 따옴표 처리와 플래그 함정을 대신 해결해 줍니다. 메서드를 고르고 URL을 입력하고 헤더를 한 줄에 하나씩 쓰고 본문을 붙여 넣으면, 모든 값이 작은따옴표로 감싸지고 값 안의 작은따옴표는 올바르게 이스케이프되며 플래그마다 줄이 나뉜 명령이 만들어집니다. 옆의 목록은 각 플래그가 하는 일을 설명하므로 실행하기 전에 명령을 읽어 볼 수 있습니다.

버그 리포트, README, 런북에 재현 가능한 요청을 남기거나 스테이징 API를 빠르게 시험할 때 쓰는 도구입니다. 사람들이 자주 걸려 넘어지는 부분을 처리합니다. HEAD는 -X HEAD가 아니라 -I로 쓰고, 본문이 있는 POST에서는 불필요한 -X POST를 빼며, 리디렉션을 따라갈 때는 POST를 POST로 유지하는 플래그를 추가할 수 있습니다. URL 스킴이 없을 때, JSON이 해석되지 않을 때, 자격 증명이 셸 기록에 남을 때도 경고합니다. 본문이 있는데 Content-Type 헤더가 없으면 경고합니다. curl은 기본적으로 application/x-www-form-urlencoded로 표시해 보냅니다.

모든 처리는 브라우저 안에서 이루어집니다. 이 페이지는 텍스트만 만들 뿐 요청을 보내거나 URL에 접속하거나 아무것도 저장하지 않습니다. 헤더에 토큰이 들어가는 경우가 많아 이 도구에는 공유 링크가 없습니다.

사용 방법

  1. 메서드를 고르고 URL 입력

    GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS 중에서 고르고 전체 URL을 입력하거나, POST JSON, Bearer 토큰, 폼 로그인 같은 예제에서 시작합니다. URL은 필수이며 입력한 그대로 사용합니다. URL에 대괄호나 중괄호가 있으면 curl의 URL 글로빙을 끄는 -g를 자동으로 추가합니다.

  2. 헤더를 한 줄에 하나씩 추가

    각 헤더를 Name: value 형식(예: Content-Type: application/json)으로 쓰거나 자주 쓰는 헤더는 빠른 버튼으로 추가합니다. 줄 앞뒤 공백은 잘리고 빈 줄은 무시됩니다. 올바른 헤더 이름 뒤에 콜론이 없는 줄은 메시지와 함께 거부됩니다.

  3. 본문 붙여 넣기

    JSON 문서나 폼 데이터 같은 요청 본문을 텍스트로 입력합니다. 본문이 비어 있으면 데이터 옵션이 추가되지 않습니다. Content-Type 헤더가 JSON인데 본문이 해석되지 않으면 경고가 나옵니다. HEAD가 아닌 요청에 본문이 있고 Content-Type이 없으면 curl의 기본값 application/x-www-form-urlencoded를 알리는 경고가 나옵니다. 실제 본문 형식에 맞는 헤더를 추가하세요.

  4. 옵션 설정

    리디렉션 따라가기는 -L을 추가합니다. POST에서는 301·302·303 리디렉션에서도 POST를 유지하는 스위치가 나타납니다. 압축 응답 요청, 자세한 출력(-v)을 켜고, 플래그마다 줄을 나눌지 한 줄로 쓸지도 고를 수 있습니다.

  5. 읽은 뒤 복사

    설명 목록과 경고를 보며 명령을 확인한 뒤 버튼이나 Ctrl/Cmd + Enter로 복사하세요. 티켓이나 채팅에 붙여 넣기 전에 실제 토큰은 지우세요.

작동 원리

생성되는 명령의 모양

명령은 정해진 순서로 조립됩니다. 필요할 때만 메서드 플래그, 따옴표로 감싼 URL, 헤더마다 -H 'Header: value', 본문이 있으면 --data-raw 'body', 선택했다면 -L, --compressed, -v 순입니다. GET은 curl의 기본값이고 본문이 있는 POST는 데이터 플래그가 암시하므로 둘에는 -X를 붙이지 않으며, 다른 메서드는 -X PUT처럼 명시합니다. HEAD는 -I입니다. URL에 괄호가 있으면 URL 바로 다음에 -g가 붙습니다.

--data-raw는 본문을 준 그대로 보냅니다. 더 흔한 -d(--data)는 @로 시작하는 본문을 읽을 파일 이름으로 취급해서 @username 같은 본문에서 뜻밖의 일이 생길 수 있지만 --data-raw는 그렇지 않습니다.

curl \
  'https://api.example.com/v1/events' \
  -H 'Authorization: Bearer replace-me' \
  -H 'Content-Type: application/json' \
  --data-raw '{"event":"deploy","dry_run":true}' \
  -L

HEAD와 리디렉션

-X HEAD는 메서드 이름만 바꿀 뿐이라 HEAD 응답에는 없는 본문을 curl이 계속 기다리고, 서버가 연결을 닫을 때까지 명령이 멈춥니다. -I(--head)는 curl에게 HEAD 요청임을 알려 줍니다. 빌더는 항상 -I를 씁니다.

기본적으로 curl은 브라우저처럼 301, 302, 303 리디렉션 뒤에 POST를 GET으로 바꾸고 본문을 버립니다. -X POST로 메서드를 강제하면 GET이어야 할 리디렉션에서도 POST를 반복하므로 깔끔한 해결책이 아닙니다. --post301, --post302, --post303 플래그는 해당 코드에서 POST를 유지하며, "리디렉션에서 POST 유지" 스위치가 세 가지를 모두 추가합니다. 켜지 않으면 기본 동작을 알리는 경고가 나옵니다.

POSIX 셸에서의 작은따옴표 이스케이프

bash, zsh 같은 POSIX 셸에서는 작은따옴표 안의 텍스트가 글자 그대로 쓰입니다. 변수 확장도, 명령 치환도, 백슬래시 이스케이프도 없습니다. 그래서 JSON을 넘기는 가장 안전한 방법입니다. 작은따옴표 안에 넣을 수 없는 것은 또 다른 작은따옴표뿐이라, 빌더는 따옴표를 닫고 이스케이프한 따옴표를 넣은 뒤 다시 엽니다. it's는 'it'\''s'가 됩니다.

이 명령은 POSIX 셸용입니다. Windows cmd.exe에서는 작은따옴표가 따옴표 문자가 아니고, PowerShell에서는 curl이 Invoke-WebRequest의 별칭일 수 있으므로 거기서는 curl.exe를 쓰고 따옴표를 맞게 고치세요.

실제 예시

리디렉션을 따라가며 JSON 이벤트 POST
입력
메서드: POST
URL: https://api.example.com/v1/events
헤더:
Authorization: Bearer replace-me
Content-Type: application/json
요청 본문: {"event":"deploy","dry_run":true}
리디렉션 따라가기 (-L): 켬
출력
curl \
  'https://api.example.com/v1/events' \
  -H 'Authorization: Bearer replace-me' \
  -H 'Content-Type: application/json' \
  --data-raw '{"event":"deploy","dry_run":true}' \
  -L

도구의 함수가 만든 결과입니다. 본문이 있으면 이미 POST이므로 -X POST가 없고, 페이지는 리디렉션 때 GET으로 바뀐다고 경고합니다.

아포스트로피가 든 헤더 (한 줄 배치)
입력
메서드: GET
URL: https://example.com
헤더: X-Test: it's fine
출력
curl 'https://example.com' -H 'X-Test: it'\''s fine'
JSON 안에 따옴표가 있는 PUT, 자세한 출력
입력
메서드: PUT
URL: https://example.com/items/7
헤더: Content-Type: application/json
요청 본문: {"name":"O'Reilly"}
자세히 출력 (-v): 켬
출력
curl -X PUT 'https://example.com/items/7' -H 'Content-Type: application/json' --data-raw '{"name":"O'\''Reilly"}' -v
멈추지 않는 HEAD 요청
입력
메서드: HEAD
URL: https://example.com/
리디렉션 따라가기 (-L): 켬
출력
curl -I 'https://example.com/' -L

-I가 -X HEAD를 대신하므로 curl이 본문을 기다리지 않습니다.

리디렉션 뒤에도 POST를 유지하는 폼 로그인
입력
메서드: POST
URL: https://example.com/login
헤더: Content-Type: application/x-www-form-urlencoded
요청 본문: user=ada&password=secret
리디렉션 따라가기 (-L): 켬
리디렉션에서 POST 유지: 켬
출력
curl 'https://example.com/login' -H 'Content-Type: application/x-www-form-urlencoded' --data-raw 'user=ada&password=secret' -L --post301 --post302 --post303

자격 증명 경고는 Authorization·Cookie 같은 헤더가 있을 때만 나옵니다. 이 예제는 본문에 비밀번호가 있으니 공유하기 전에 지우세요.

잘못된 헤더는 거부됨
입력
헤더: broken
출력
헤더는 Accept: application/json처럼 Name: value 형식으로 써 주세요.

콜론이 없거나 콜론으로 시작하는 줄은 추측하지 않고 거부합니다.

자주 하는 실수

  • -X HEAD 사용

    cURL 매뉴얼은 -X로 HEAD를 강제하면 오지 않는 본문을 curl이 기다린다고 경고합니다. 빌더는 HEAD에 -I를 쓰니, 명령을 손으로 고칠 때도 그대로 두세요.

  • 리디렉션 뒤 POST가 GET으로 바뀜

    301, 302, 303 뒤에 curl은 브라우저처럼 본문 없이 GET으로 요청을 반복합니다. 서버가 POST를 리디렉션하는데(예: 로그인 뒤 /home으로 보냄) POST를 반복해야 한다면 -X로 메서드를 강제하지 말고 "리디렉션에서 POST 유지"를 켜세요.

  • JSON인데 Content-Type을 빼먹음

    Content-Type: application/json이 없는 JSON 본문은 폼 데이터로 전송되어 많은 API가 400이나 415로 응답합니다. 빠른 버튼으로 헤더를 추가하세요. 빌더는 HEAD가 아닌 요청의 본문에 Content-Type이 없으면 경고합니다. 내용이 JSON처럼 보여도 기본 헤더는 application/x-www-form-urlencoded입니다.

  • 공유하는 명령에 비밀을 붙여 넣음

    복사한 명령에는 Authorization 헤더가 평문으로 들어 있습니다. 올리기 전에 실제 토큰을 자리 표시자로 바꾸고, 셸 기록에는 실행한 모든 것이 남는다는 점도 기억하세요.

  • POSIX 명령을 cmd.exe에서 실행

    Windows cmd.exe는 작은따옴표를 따옴표로 취급하지 않아 명령이 깨집니다. Git Bash나 WSL을 쓰거나 셸에 맞게 따옴표를 고쳐 쓰세요.

  • URL의 공백과 특수 문자

    URL은 입력한 그대로 사용합니다. 공백이나 쿼리 값은 직접 퍼센트 인코딩(%20)하거나, 복사한 명령에 -G --data-urlencode를 써서 인코딩한 데이터를 GET 쿼리로 붙이세요. -G 없이 --data-urlencode만 쓰면 요청 본문으로 보냅니다. 괄호가 있으면 -g가 자동으로 붙지만, 글로빙만 끌 뿐 URL을 인코딩하지는 않습니다.

자주 묻는 질문

cURL로 JSON은 어떻게 보내나요?

Content-Type: application/json 헤더를 추가하고 POST를 고른 뒤 JSON을 본문에 붙여 넣으세요. 빌더가 작은따옴표로 감싸고 --data-raw를 쓰므로 따옴표와 중괄호가 그대로 유지됩니다.

cURL 인수 안에 작은따옴표는 어떻게 넣나요?

따옴표를 닫고, 이스케이프한 따옴표를 넣고, 다시 엽니다. it's는 'it'\''s'가 되며 빌더가 자동으로 처리합니다.

cURL로 HEAD 요청은 어떻게 하나요?

curl -I URL을 씁니다. 빌더에서 HEAD를 고르면 정확히 그렇게 쓰는데, -X HEAD는 curl이 응답 본문을 기다리게 만들기 때문입니다.

왜 명령에 -X POST가 없나요?

본문 플래그가 이미 curl이 POST를 보내게 하므로 -X POST는 불필요하고 리디렉션에서도 메서드를 고정해 버립니다. 다른 메서드와 본문 없는 POST에는 -X가 붙습니다.

왜 -L을 쓰면 POST가 GET으로 바뀌나요?

301, 302, 303 리디렉션에서 curl은 브라우저처럼 GET으로 바꿉니다. "리디렉션에서 POST 유지"를 켜면 --post301 --post302 --post303이 추가됩니다.

이 페이지가 요청을 보내나요?

아니요. 브라우저 안에서 명령 텍스트만 만듭니다. URL로도 서버로도 아무것도 전송되지 않습니다.

기본 인증, 쿠키, 파일 업로드도 넣을 수 있나요?

폼에서는 안 됩니다. 명령을 복사한 뒤 -u user:pass, -b cookies, -F field=@file을 직접 추가하세요. 요청 정보는 전체 64 KiB까지 허용됩니다.

마지막 업데이트: