본문 바로가기
Tools2026년 6월 30일4분 읽기

curl 완벽 활용 — API 디버깅에 꼭 쓰는 옵션

YS
김영삼
조회 391
curl 완벽 활용 — API 디버깅에 꼭 쓰는 옵션

핵심 요약

curl은 API 디버깅의 스위스 army knife다. -i(응답 헤더 포함), -X(메서드), -H(헤더), -d(본문), -v(상세 추적), -L(리다이렉트 따라가기) 여섯 개만 알면 대부분의 요청을 재현하고 진단할 수 있다.

1. 기본 GET과 응답 보기

curl https://api.example.com/users      # 본문만
curl -i https://api.example.com/users   # 상태줄+헤더+본문
curl -s -o /dev/null -w "%{http_code}\n" URL  # 상태코드만

2. POST — JSON 보내기

curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer TOKEN" \
  -d '{"name":"철수","age":20}'

-d를 쓰면 메서드가 자동으로 POST가 되므로 -X POST는 생략 가능하다.

3. 진단에 강한 옵션

옵션용도
-v요청/응답 헤더·TLS 과정까지 상세 출력
-L301/302 리다이렉트를 끝까지 따라감
-IHEAD 요청 — 헤더만 확인
-k인증서 검증 무시(로컬 테스트 전용)
--resolveDNS를 무시하고 특정 IP로 접속(배포 전 검증)

4. 응답 타이밍 측정

curl -s -o /dev/null -w \
 "dns:%{time_namelookup} connect:%{time_connect} ttfb:%{time_starttransfer} total:%{time_total}\n" \
 https://youngsam.net

어디서 느린지(DNS냐 연결이냐 서버 응답이냐)를 한 줄로 분해할 수 있다.

5. 실전 팁

  • 브라우저 개발자도구 → Network → 요청 우클릭 → "Copy as cURL"로 복잡한 요청을 그대로 재현
  • 쿠키는 -b "k=v"로 전송, -c cookies.txt로 저장
  • 파일 업로드는 -F "file=@a.png"(multipart)

자주 묻는 질문

-d로 JSON을 보냈는데 서버가 못 읽어요.

Content-Type: application/json 헤더를 빠뜨렸을 가능성이 큽니다. curl은 -d 기본값을 application/x-www-form-urlencoded로 보내므로, JSON이면 헤더를 명시해야 서버가 올바르게 파싱합니다.

-v와 -i는 뭐가 다른가요?

-i는 응답 헤더를 본문과 함께 출력하고, -v는 요청 헤더·응답 헤더·TLS 핸드셰이크 과정까지 전부 보여줍니다. 문제가 어디서 나는지 모를 땐 -v가 유용합니다.

curl로 보낸 요청을 코드로 옮기려면요?

반대로 브라우저 Network 탭에서 "Copy as cURL"로 실제 요청을 복사한 뒤 curl로 재현하고, 동작을 확인한 다음 코드로 옮기는 흐름이 안전합니다. 헤더·쿠키 누락으로 인한 차이를 줄일 수 있습니다.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록