curl (Client URL)
curl은 다양한 프로토콜(HTTP, HTTPS, FTP 등)을 사용하여 서버와 데이터를 송수신하는 명령줄 도구입니다. 웹 페이지의 소스를 가져오거나, 파일을 다운로드하고, 특히 REST API를 호출하여 데이터를 주고받을 때 개발자들이 가장 많이 사용하는 도구입니다.
[Image of Linux curl command sending a request to a server and receiving a response]
1. 기본 사용법
curl [옵션] [URL]
- 옵션 없이 사용하면 해당 URL의 HTML 소스나 응답 데이터를 터미널에 그대로 출력합니다.
2. 주요 옵션
| 옵션 | 이름 | 설명 |
|---|---|---|
-O |
remote-name | 파일을 서버의 파일 이름 그대로 로컬에 저장합니다. (대문자 O) |
-o [파일명] |
output | 다운로드한 파일의 이름을 지정하여 저장합니다. (소문자 o) |
-L |
location | URL이 변경(Redirection)되었을 경우, 바뀐 주소로 자동 이동합니다. |
-I |
head | 본문 제외, 서버의 헤더(Header) 정보만 가져옵니다. (상태 코드 확인용) |
-X [메서드] |
request | HTTP 메서드(GET, POST, PUT, DELETE 등)를 지정합니다. |
-H [헤더] |
header | 요청 시 사용자 정의 헤더를 추가합니다. (예: 인증 토큰) |
3. 실무 활용 예시
① 웹 페이지 소스 보기
curl https://www.google.com
② 파일 다운로드하기
curl -O https://example.com/files/data.zip
③ 서버 응답 상태 코드만 확인하기 (정상 200 등)
curl -I https://www.github.com
④ REST API에 JSON 데이터 전송하기 (POST)
curl -X POST -H "Content-Type: application/json" -d '{"name":"kim", "age":20}' https://api.example.com/users
4. [팁] curl vs wget
- wget: 단순히 파일을 다운로드하는 데 최적화되어 있습니다. 재귀적 다운로드(웹 사이트 전체 복제) 기능이 강력합니다.
- curl: 데이터 송수신 및 API 테스트에 최적화되어 있습니다. 훨씬 더 많은 프로토콜과 정교한 제어를 지원합니다.