curl 란?
- cURL은 url 기반의 데이터 송수신을 위한 명령줄 제공 라이브러리 이다.
- cURL을 활용하면 별도의 툴 설치 없이 다양한 프로토콜 기반의 데이터 통신이 가능하다.
- 대부분의 리눅스 배포 환경에는 curl 패키지가 마리 설치 되어 있으며 맥OS 역시 기본적으로 설치가 되어 있다.
curl 사용법 및 옵션
- curl 을 대체하기 위한 좋은 툴과 라이브러리들이 너무나 많이 존재한다
하지만 여전히 curl 을 사용하는 이유는 postman이나 다른 툴을 설치 하기 힘든 가상 환경이거나 폐쇄망에서의 테스트 환경에서는 curl이 가장 좋은 선택지가 될것이다.
curl [option] <URL>
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 인코딩해서 전송 |