심심한 개발자의 취미생활

curl 란?

  • cURL은 url 기반의 데이터 송수신을 위한 명령줄 제공 라이브러리 이다.
  • cURL을 활용하면 별도의 툴 설치 없이 다양한 프로토콜 기반의 데이터 통신이 가능하다.
  • 대부분의 리눅스 배포 환경에는 curl 패키지가 마리 설치 되어 있으며 맥OS 역시 기본적으로 설치가 되어 있다.

curl 사용법 및 옵션

  • curl 을 대체하기 위한 좋은 툴과 라이브러리들이 너무나 많이 존재한다 하지만 여전히 curl 을 사용하는 이유는 postman이나 다른 툴을 설치 하기 힘든 가상 환경이거나 폐쇄망에서의 테스트 환경에서는 curl이 가장 좋은 선택지가 될것이다.
# 기본 구문
curl [option] <URL>

# JSON POST 요청
curl -X POST https://api.example.com/data \
     -H "Content-Type: application/json" \
     -d '{"name":"Seungwoo"}'

# 파일 업로드
curl -F "file=@example.txt" https://api.example.com/upload

# 응답 헤더 포함 출력
curl -i https://example.com

# 리다이렉션 따라가기
curl -L https://short.url

curl 기본 요청 옵션

옵션 설명
-X, --request 요청 메서드 지정 (ex. GET, POST, PUT, DELETE)
-d, --data 요청 본문에 데이터 전송 (기본은 POST로 설정 됨)
-G, --get --data와 함께 사용 시, GET 요청으로 전송 (QueryString)
-F, --form multipart/form-data 형식으로 데이터 전송
-H, --header 헤더 추가 (ex. -H "Content-Type:application/json")
-b, --cookie 쿠키 전송 (ex. -b "sessionId=abc123")
-c, --cookie-jar 응탑 쿠키를 파일로 저장
-u, --user 인증 (ex. -u username:password)

출력 및 형식 옵션

옵션 설명
-i 응답에 헤더 포함
-s, --silent 진행률/에러 숨김 (스크립트 용)
-S, --show-error silent 모드에서도 에러는 출력
-v, --verbose 상세 로그 출력
-L, --location 리다이렉트 따라가기
-o 응답을 파일로 저장
-O URL 에서 추출한 파일명으로 저장

보안 관련 옵션

옵션 설명
-k, --insecure SSL 인증서 검증 무시 (개발 환경 사용)
--cert 클라이언트 인증서 지정
--key 인증서용 개인 키 지정
--cacert 특정 CA 인증서를 신뢰

기타 유용한 옵션

옵션 설명
--url 요청할 URL 지정 (명령어 맨 뒤에 써도 됨)
--http1.1, --http2 HTTP 버전 강제 지정
--max-time 최대 실행 시간 제한
--compressed 서버가 gzip 등의 압축 응답을 하면 자동 해제
--resolve DNS 우회 (ex. --resolve example.com:443:127.0.0.1)
--data-urlencode 데이터를 URL 인코딩해서 전송