curl 명령어 모음
GET/POST·헤더·인증·파일 다운로드 등 curl 핵심 옵션
데이터는 서버로 전송되지 않습니다 — 모든 처리는 브라우저 안에서만 서버 전송 0건
기본 요청
-
curl https://example.comGET 요청을 보내고 응답 본문을 출력합니다
-
curl -o 파일명 URL응답을 지정한 파일명으로 저장합니다
-
curl -O URL응답을 URL의 파일명 그대로 저장합니다
-
curl -L URL리다이렉트를 따라갑니다 (Location 헤더 추적)
-
curl -s URL진행 표시 없이 조용하게(silent) 실행합니다
-
curl -sS URL진행은 숨기지만 오류는 표시합니다
-
curl -v URL헤더를 포함한 전체 요청/응답을 출력합니다 (디버깅용)
HTTP 메서드
-
curl -X POST URLPOST 요청을 보냅니다
-
curl -X PUT URLPUT 요청을 보냅니다
-
curl -X PATCH URLPATCH 요청을 보냅니다
-
curl -X DELETE URLDELETE 요청을 보냅니다
데이터·바디 전송
-
curl -d "key=value&foo=bar" URL폼 데이터를 POST로 전송합니다 (application/x-www-form-urlencoded)
-
curl -d '{"key":"value"}' -H 'Content-Type: application/json' URLJSON 바디를 POST로 전송합니다
-
curl -d @파일.json -H "Content-Type: application/json" URL파일 내용을 바디로 전송합니다
-
curl -F "file=@파일경로" URL파일을 multipart/form-data로 업로드합니다
헤더·인증
-
curl -H "Authorization: Bearer 토큰" URLBearer 토큰 인증 헤더를 추가합니다
-
curl -H "X-Api-Key: 키값" URL커스텀 헤더를 추가합니다
-
curl -u 사용자:비밀번호 URLBasic 인증을 사용합니다
-
curl -H "Cookie: name=value" URL쿠키를 수동으로 전송합니다
-
curl -b cookies.txt URL파일에서 쿠키를 읽어 전송합니다
-
curl -c cookies.txt URL응답 쿠키를 파일에 저장합니다
응답 확인
-
curl -I URL응답 헤더만 출력합니다 (HEAD 요청)
-
curl -w "%{http_code}" -o /dev/null -s URLHTTP 상태 코드만 출력합니다
-
curl -w "\ntime: %{time_total}s\n" URL응답 시간을 측정합니다
TLS·프록시
-
curl -k URLSSL 인증서 검증을 건너뜁니다 (테스트 환경 용, 운영 사용 금지)
-
curl --cacert cert.pem URL커스텀 CA 인증서를 사용합니다
-
curl -x http://proxy:8080 URLHTTP 프록시를 통해 요청합니다
기타 유용한 옵션
-
curl -C - -O URL중단된 다운로드를 이어받습니다
-
curl --limit-rate 1M URL다운로드 속도를 1MB/s로 제한합니다
-
curl --retry 3 URL실패 시 최대 3번 재시도합니다
-
curl --connect-timeout 10 URL연결 타임아웃을 10초로 설정합니다
curl, API 테스트의 스위스 아미 나이프
curl은 커맨드라인에서 HTTP 요청을 보내는 가장 범용적인 도구입니다. REST API 테스트, 파일 다운로드, 인증 헤더 전송, 응답 시간 측정 등 웹 개발과 서버 운영 전반에서 쓰입니다. -v 옵션으로 전체 요청/응답 헤더를 확인하면 디버깅이 훨씬 빨라집니다.
POST 요청 시 -H "Content-Type: application/json" 헤더를 반드시 함께 지정하세요. 헤더를 빠뜨리면 서버가 바디를 올바르게 파싱하지 못합니다. -w 옵션으로 HTTP 상태 코드만 뽑아서 스크립트 조건 분기에 활용할 수도 있습니다.
자주 묻는 질문
- curl로 JSON을 예쁘게 출력하려면?
- curl -s URL | python3 -m json.tool 또는 jq가 설치되어 있다면 curl -s URL | jq . 를 사용하면 들여쓰기된 JSON을 볼 수 있습니다. jq는 curl과 함께 가장 자주 쓰이는 JSON 처리 도구입니다.
- curl과 wget의 차이는?
- curl은 HTTP 외 FTP, SMTP 등 다양한 프로토콜을 지원하며 API 테스트에 강합니다. wget은 재귀 다운로드와 미러링에 특화되어 있어 웹사이트 전체를 내려받을 때 유용합니다. API 호출이나 헤더·인증이 필요한 작업에는 curl이 더 적합합니다.
- HTTPS 인증서 오류가 날 때 어떻게 하나요?
- -k(--insecure) 옵션으로 인증서 검증을 건너뛸 수 있지만, 운영 환경에서는 절대 사용하지 마세요. 자체 서명 인증서라면 --cacert cert.pem으로 CA 인증서를 직접 지정하는 것이 올바른 방법입니다.