본문 바로가기
💻 IT

🚀 cURL 명령어 완벽 가이드: HTTP Method별 필수 옵션 및 샘플 커맨드

by Dr.Dog 2025. 10. 29.
728x90

cURL(Client URL)은 명령어 라인(Command Line)에서 URL을 이용해 데이터를 전송하는 데 사용되는 강력한 도구입니다. HTTP, HTTPS, FTP, SMTP 등 다양한 프로토콜을 지원하며, 주로 REST API 테스트 및 서버와의 통신을 확인할 때 매우 유용하게 사용됩니다.

이 블로그 포스트에서는 주요 HTTP Method(GET, POST, PUT, DELETE 등)를 중심으로 cURL 사용법과 함께 필수 옵션 조합 및 다양한 예시를 제공합니다.


💡 cURL 주요 옵션

Short Option Long Option 설명
-X --request 사용할 HTTP Method를 지정합니다. (예: POST, PUT, DELETE)
-H --header HTTP 헤더를 추가합니다. (예: Content-Type: application/json)
-d --data POST, PUT 등 요청 시 본문(Body) 데이터를 전송합니다. -d 사용 시 기본적으로 POST Method로 간주됩니다.
-v --verbose 요청 및 응답에 대한 상세한 정보를 출력합니다. 디버깅에 유용합니다.
-i --include 응답 본문과 함께 응답 헤더를 출력합니다.
-k --insecure SSL/TLS 인증서 검증을 무시하고 요청합니다. 자체 서명된 인증서 사용 시 유용합니다.
-L --location HTTP 3xx 응답 (리다이렉트) 발생 시 리다이렉트된 URL로 자동으로 재요청합니다.
-o --output 응답 내용을 지정된 파일로 저장합니다.
-O --remote-name 응답 내용을 원격 파일의 이름 그대로 파일로 저장합니다.

1. GET 요청 (데이터 조회)

GET은 서버로부터 리소스(데이터)를 조회할 때 사용되는 Method입니다. 쿼리 파라미터는 URL에 포함되어 전송되며, 기본 cURL 요청 시 -X GET을 생략해도 GET으로 동작합니다.

필수 옵션 조합 및 샘플

옵션 조합 설명 샘플 Command
기본 조회 가장 기본적인 GET 요청 curl http://api.example.com/users
쿼리 파라미터 URL에 쿼리 파라미터를 추가하여 조회 curl "http://api.example.com/products?category=book&limit=10"
상세 출력 응답 헤더 및 상세 요청/응답 정보 출력 curl -iv http://api.example.com/status
리다이렉트 처리 301/302 응답 시 리다이렉션 따라가기 curl -L http://example.com
헤더 추가 특정 헤더(예: 인증 토큰)를 포함하여 요청 curl -H "Authorization: Bearer token123" http://api.example.com/profile

2. POST 요청 (데이터 생성)

POST는 서버에 새로운 리소스를 생성하거나 데이터를 전송할 때 사용됩니다. 데이터는 주로 요청 본문(Body)에 포함되어 전송됩니다.

필수 옵션 조합 및 샘플

옵션 조합 설명 샘플 Command
JSON 데이터 JSON 형식의 데이터를 본문에 포함하여 전송 curl -X POST -H "Content-Type: application/json" -d '{"name": "새상품", "price": 10000}' http://api.example.com/products
폼 데이터 URL-encoded 형식의 폼 데이터 전송 (-d 사용 시 기본 Content-Type은 application/x-www-form-urlencoded로 설정됨) curl -d "username=user1&password=pass" http://api.example.com/login
파일 업로드 multipart/form-data 형식으로 파일 전송 curl -X POST -F "image=@/path/to/local/file.jpg" http://api.example.com/upload
파일 내용 전송 @ 접두사를 사용하여 파일 내용을 요청 본문에 포함 curl -X POST -H "Content-Type: application/json" -d @data.json http://api.example.com/users

3. PUT 요청 (데이터 전체 수정/생성)

PUT기존 리소스 전체를 업데이트하거나, 해당 URI에 리소스가 없는 경우 새로운 리소스를 생성할 때 사용됩니다. 요청 본문(Body)에 업데이트할 전체 리소스의 데이터를 포함합니다.

필수 옵션 조합 및 샘플

옵션 조합 설명 샘플 Command
JSON 데이터 수정 지정된 ID 리소스의 전체 JSON 데이터를 업데이트 curl -X PUT -H "Content-Type: application/json" -d '{"title": "수정된 타이틀", "content": "새로운 내용"}' http://api.example.com/posts/1
파일 내용으로 수정 파일 내용을 그대로 업데이트 데이터로 사용 curl -X PUT -H "Content-Type: text/plain" -d @new_data.txt http://api.example.com/resource/2

4. DELETE 요청 (데이터 삭제)

DELETE는 지정된 리소스를 삭제할 때 사용됩니다. 일반적으로 요청 본문은 사용하지 않으며, URL로 리소스를 식별합니다.

필수 옵션 조합 및 샘플

옵션 조합 설명 샘플 Command
기본 삭제 지정된 ID의 리소스 삭제 curl -X DELETE http://api.example.com/users/5
상세 출력 삭제 요청의 상세 응답 확인 curl -v -X DELETE http://api.example.com/items/10

5. HEAD 요청 (헤더 정보만 조회)

HEADGET 요청과 동일하지만, 응답 본문 없이 헤더 정보만 받아올 때 사용됩니다. 리소스의 존재 여부나 메타데이터를 확인할 때 유용합니다.

필수 옵션 조합 및 샘플

옵션 조합 설명 샘플 Command
기본 헤더 조회 응답 본문 없이 헤더만 출력 curl -I http://api.example.com/largefile
상세 헤더 조회 상세 요청/응답 정보와 헤더 출력 curl -iv http://api.example.com/check

6. OPTIONS 요청 (지원 Method 조회)

OPTIONS는 특정 URL에서 서버가 지원하는 HTTP Method (허용되는 작업)를 조회할 때 사용됩니다. 서버는 보통 Allow 헤더를 통해 지원 Method를 응답합니다.

필수 옵션 조합 및 샘플

옵션 조합 설명 샘플 Command
지원 Method 조회 해당 리소스에 대해 지원되는 Method 확인 curl -i -X OPTIONS http://api.example.com/users

7. TRACE 요청 (메시지 루프백 테스트)

TRACE는 요청 경로를 따라 메시지 루프백 테스트를 수행하여 경로상의 프록시 등의 동작을 확인할 때 사용됩니다. 보안상의 이유로 비활성화된 경우가 많습니다.

필수 옵션 조합 및 샘플

옵션 조합 설명 샘플 Command
기본 TRACE 요청 요청 메시지의 루프백 확인 curl -i -X TRACE http://api.example.com

8. Basic Authentication (기본 인증)

Basic Authentication은 HTTP 헤더에 사용자 이름과 비밀번호를 base64로 인코딩하여 전송하는 가장 기본적인 인증 방식입니다.

필수 옵션: -u 또는 --user

  • 형식: -u [username]:[password]
  • cURL이 자동으로 사용자 이름과 비밀번호를 인코딩하여 Authorization: Basic [encoded_credentials] 헤더를 생성해 전송합니다.

📝 샘플 Command

옵션 조합 설명 샘플 Command
GET 요청 Basic Auth 정보를 포함하여 데이터 조회 curl -u "user123:mypassword" http://api.example.com/secure/data
POST 요청 Basic Auth와 JSON 데이터를 함께 전송 curl -X POST -u "admin:secret" -H "Content-Type: application/json" -d '{"key": "value"}' http://api.example.com/secure/create

9. Bearer Token Authentication (토큰 기반 인증)

Bearer Token 방식은 **JWT(JSON Web Token)**와 같은 토큰을 사용하여 인증하는, 최신 API에서 가장 널리 사용되는 방식입니다. 토큰은 일반적으로 Authorization 헤더에 Bearer 접두사와 함께 전송됩니다.

필수 옵션: -H 또는 --header

  • 형식: -H "Authorization: Bearer [your_token_string]"
  • 토큰이 만료되지 않았는지, 토큰 문자열이 정확한지 확인해야 합니다.

📝 샘플 Command

옵션 조합 설명 샘플 Command
GET 요청 Bearer Token을 사용하여 데이터 조회 curl -H "Authorization: Bearer abcdef1234567890" http://api.example.com/profile
DELETE 요청 Bearer Token을 사용하여 리소스 삭제 curl -X DELETE -H "Authorization: Bearer abcdef1234567890" http://api.example.com/resource/7
토큰 변수 사용 쉘 변수에 저장된 토큰 사용 TOKEN="jwt_token_here" curl -H "Authorization: Bearer $TOKEN" http://api.example.com/info

10. 기타 인증 방식: Digest, NTLM 등

cURL은 위 두 방식 외에도 다양한 인증 프로토콜을 지원합니다.

옵션 인증 방식 설명 샘플 Command
--digest Digest Basic Auth보다 안전한 다이제스트 인증 사용 curl --digest -u "user:pass" http://api.example.com/digest
--ntlm NTLM Microsoft 기반 환경에서 주로 사용되는 NTLM 인증 사용 curl --ntlm -u "DOMAIN\user:pass" http://intranet.company.com/resource
728x90

댓글