본문 바로가기
운영체제

Curl에 대해 알아보자

by 아촌 2025. 4. 6.

개발자들이 웹 API를 테스트할 때 자주 사용하는 도구인 curl은 브라우저나 JavaScript 환경에서 fetch나 ajax로 API를 호출하는 것처럼, 터미널에서 동일한 API 호출을 테스트할 수 있게 해줍니다. curl은 단순한 GET 요청부터 복잡한 헤더와 인증 정보를 포함한 요청까지 다양한 HTTP 요청을 다룰 수 있어 API 개발과 테스트에 필수적인 도구입니다.

curl이란?

curl(Client URL)은 다양한 프로토콜을 사용하여 데이터를 전송하고 받을 수 있는 커맨드 라인 도구이자 라이브러리입니다. 1997년에 처음 등장한 이후, 웹 개발, 네트워크 디버깅, API 테스트 등에서 널리 사용되고 있습니다.

 

Curl 명령어 옵션

$ curl [options...] <url>

$ curl --help all # 전체 명령어 보기

웹 페이지 내용 가져오기

가장 간단한 형태로, 특정 URL의 내용을 터미널에 출력할 수 있습니다.

curl https://example.com

파일로 저장하기

-o 또는 --output 옵션을 사용하여 결과를 파일로 저장할 수 있습니다.

curl -o output.html https://example.com

헤더 정보 보기

-I 또는 --head 옵션을 사용하면 HTTP 헤더만 볼 수 있습니다.

curl -I https://example.com

 

HTTP 요청 메서드

curl은 다양한 HTTP 메서드를 지원합니다.

GET 요청 (기본값)

curl https://api.example.com/data
 

POST 요청

curl -X POST https://api.example.com/create -d "name=John&age=30"

JSON 데이터로 POST 요청

curl -X POST https://api.example.com/create \ -H "Content-Type: application/json" \ -d '{"name":"John","age":30}'

PUT, DELETE 등 다른 메서드

curl -X PUT https://api.example.com/update/1 -d "name=Jane" curl -X DELETE https://api.example.com/delete/1

 

유용한 옵션들

사용자 인증

Basic 인증을 위해 -u 옵션을 사용할 수 있습니다.

curl -u username:password https://api.example.com/secure

헤더 추가

-H 옵션으로 요청 헤더를 추가할 수 있습니다.

curl -H "Authorization: Bearer token123" https://api.example.com/data
 

쿠키 사용

curl -b "sessionid=abc123" https://example.com

리다이렉션 따르기

-L 옵션을 사용하면 리다이렉션을 자동으로 따라갑니다.

curl -L https://example.com

상세 출력

-v 또는 --verbose 옵션을 사용하면 요청과 응답의 상세 정보를 볼 수 있습니다.

curl -v https://example.com

 

실제 활용 사례

API 테스트

RESTful API를 테스트할 때 curl은 매우 유용합니다.

 
# GET 요청 
curl https://api.example.com/users 

# POST 요청으로 새 사용자 생성 
curl -X POST https://api.example.com/users \ -H "Content-Type: application/json" \ -d '{"name":"Alice","email":"alice@example.com"}' 

# 특정 사용자 정보 업데이트 
curl -X PUT https://api.example.com/users/123 \ -H "Content-Type: application/json" \ -d '{"name":"Alice Smith"}' 

# 사용자 삭제 
curl -X DELETE https://api.example.com/users/123​

파일 업로드

-F 옵션을 사용하여 멀티파트 폼 데이터로 파일을 업로드할 수 있습니다.

curl -F "file=@photo.jpg" https://api.example.com/upload

웹 서버 디버깅

curl -v https://example.com

속도 테스트

 
curl -o /dev/null -s -w "%{time_total}\n" https://example.com

보안 관련 주의사항

  1. curl 명령어에 비밀번호나 토큰을 직접 입력하면 명령어 기록에 남게 됩니다.
  2. HTTPS 사이트에 연결할 때는 인증서 검증을 비활성화하지 않는 것이 좋습니다 (-k 옵션 사용 자제).
  3. 민감한 데이터는 환경 변수나 파일에서 읽어오는 방식을 고려하세요.

결론

curl은 단순히 웹 페이지를 가져오는 도구를 넘어, 개발자의 일상적인 작업에서 없어서는 안 될 강력한 도구입니다. API 테스트, 웹 서버 디버깅, 파일 다운로드 등 다양한 상황에서 활용할 수 있으며, 스크립트에 포함시켜 자동화 작업에도 사용할 수 있습니다.

복잡한 명령어는 처음에는 어렵게 느껴질 수 있지만, 기본 옵션들을 하나씩 익혀나가면 금방 능숙하게 사용할 수 있게 될 것입니다. 개발 환경에서 curl을 적극적으로 활용하여 작업 효율성을 높여보세요!

'운영체제' 카테고리의 다른 글

[Linux] apt update 오류 (hash sum mismatch)  (0) 2025.04.03