API 개발/테스트 막힐 때 — curl 명령어 실전 사용법 총정리

API 개발이나 테스트를 하면서 `curl` 명령어로 간단한 호출은 성공했지만, 인증 토큰 추가, 복잡한 헤더 설정, 심지어 파일 업로드까지 시도하다 막혀버린 경험이 있으신가요? 이런 상황은 HTTP 프로토콜의 다양한 요청 방식을 `curl` 문법에 정확히 매핑하는 데 익숙하지 않아 발생하기 쉽습니다.

표준화된 HTTP 통신 규약과 서버 응답의 미묘한 차이 때문에 예상치 못한 오류에 부딪히는 경우가 많습니다. 특히 인증 방식이나 데이터 전송 방식이 복잡해질수록 시행착오를 겪기 쉽습니다.

이 글에서는 기본적인 API 호출부터 시작해 인증, 헤더, 데이터 형식, 파일 업로드 등 실전에서 자주 마주치는 복잡한 `curl` 사용법을 단계별로 명확하게 제시해 드립니다. 이 가이드를 통해 더 이상 `curl` 명령어 때문에 개발 흐름이 끊기는 일은 없을 것입니다.

이 글의 핵심

– `curl`을 이용한 GET, POST 등 기본 API 호출과 응답 확인 방법을 이해합니다.
– 인증, 커스텀 헤더, JSON/Form 데이터 등 복잡한 요청 처리를 완벽하게 마스터합니다.
– 파일 업로드 및 `curl`의 강력한 디버깅 옵션을 활용하여 문제 해결 시간을 획기적으로 단축합니다.

💡 한 줄 답변

API 개발/테스트 시 막히는 문제를 해결하도록 `curl` 명령어로 API를 호출하고 디버깅하는 실전 활용법을 총정리합니다.

📅 2026년 05월 26일·⏱ 11분 읽기·✏️ Mebys Blog

curl 기본기 다지기: GET, POST 요청과 응답 확인

API 개발 및 테스트에서 가장 기본이 되는 작업은 바로 HTTP 요청을 보내고 그 응답을 확인하는 것입니다. `curl`은 이 과정을 터미널에서 빠르고 효율적으로 처리할 수 있도록 돕는 강력한 도구입니다. 단순히 웹페이지 내용을 가져오는 것을 넘어, API 엔드포인트에 정확한 요청을 보내고 서버의 반응을 즉각적으로 파악하는 데 필수적입니다.

가장 흔히 사용되는 HTTP 메소드인 GET과 POST 요청은 `curl`의 기본 문법으로 손쉽게 구현할 수 있습니다. GET 요청은 특정 리소스의 정보를 조회할 때 사용하며, URL만으로 요청을 보낼 수 있습니다. POST 요청은 새로운 데이터를 생성하거나 서버에 정보를 전송할 때 사용하며, 요청 본문(body)에 데이터를 포함하는 것이 일반적입니다. 몇 가지 핵심 옵션만 익혀도 `curl` 활용의 약 80%를 해결할 수 있습니다.

  1. GET 요청 기본 — 리소스 조회에 사용됩니다. URL 뒤에 파라미터를 직접 붙여서 전달할 수 있습니다.
    curl https://api.example.com/data?id=123&category=books
  2. POST 요청 기본 — 데이터 생성 및 전송에 사용됩니다. `-X POST` 옵션과 함께 `–data` 또는 `-d` 옵션으로 데이터를 전달합니다.
    curl -X POST -d "param1=value1¶m2=value2" https://api.example.com/resource
curl 명령어 API 호출 실전

Photo by Negative Space on Pexels

복잡한 API 호출 완벽 마스터: 인증, 헤더, 데이터 처리

실제 서비스의 API는 단순한 GET/POST 요청만으로는 접근하기 어렵습니다. 보안을 위한 인증 절차, 특정 형식의 데이터를 전달하기 위한 헤더 설정, 그리고 JSON과 같은 다양한 형태의 요청 본문 처리가 필요합니다. 이 과정에서 많은 개발자들이 `curl` 사용에 어려움을 겪곤 합니다.

`curl`은 이러한 복잡한 시나리오에 대응할 수 있는 다양한 옵션을 제공합니다. 예를 들어, 인증 토큰을 전달하거나, 요청의 Content-Type을 지정하는 것은 `–header` 또는 `-H` 옵션으로 간단히 처리할 수 있습니다. 특히, JSON 데이터를 전송할 때는 Content-Type 헤더와 함께 `-d` 옵션을 활용하는 것이 일반적입니다. 약 90% 이상의 RESTful API 요청에서 이 옵션들이 중요하게 사용됩니다.

참고
HTTP 요청 시 Content-Type 헤더를 정확히 설정하는 것은 서버가 요청 본문을 올바르게 파싱하도록 돕는 매우 중요한 단계입니다. JSON 데이터를 보낼 때는 반드시 `Content-Type: application/json`을 명시해야 합니다.
  1. 인증 정보 추가 (`–header` / `–user`) — Bearer 토큰이나 Basic 인증을 `–header` 또는 `-u` 옵션으로 전달합니다.
    curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.example.com/secure-data
    curl -u "username:password" https://api.example.com/basic-auth-data
  2. 커스텀 헤더 설정 (`–header`) — `Content-Type`, `Accept` 등 필요한 헤더를 추가합니다.
    curl -H "Content-Type: application/json" -H "Accept: application/json" https://api.example.com/endpoint
  3. JSON 데이터 전송 (`-d` / `–data`) — JSON 형식의 요청 본문을 `-d` 옵션과 함께 보냅니다. 파일에서 JSON을 읽어올 때는 `@` 접두사를 사용할 수 있습니다.
    curl -X POST -H "Content-Type: application/json" -d '{"name":"John Doe","age":30}' https://api.example.com/users

파일 업로드와 고급 디버깅: 문제 해결의 지름길

API를 통해 파일을 업로드해야 하는 경우, `curl`은 `multipart/form-data` 형식으로 파일을 전송하는 기능을 제공합니다. 이 기능은 이미지, 문서 등 다양한 파일을 서버로 보내야 할 때 매우 유용하며, 특히 백엔드 개발자나 프론트엔드 개발자가 파일 업로드 API를 테스트할 때 필수적인 기능입니다.

API 호출이 예상대로 작동하지 않을 때, 효과적인 디버깅은 문제 해결 시간을 획기적으로 줄여줍니다. `curl`은 요청과 응답에 대한 상세한 정보를 출력하는 다양한 옵션을 제공하여, 개발자가 어떤 부분에서 문제가 발생했는지 3초 안에 파악할 수 있도록 돕습니다. 특히 `–verbose` 또는 `-v` 옵션은 요청 헤더, 응답 헤더, SSL 통신 과정 등 모든 상세 정보를 보여주어 디버깅에 결정적인 단서를 제공하며, 이는 수십 분의 디버깅 시간을 단축시키는 효과를 가져옵니다.

주의
`-v` (verbose) 옵션 사용 시, 요청에 포함된 인증 토큰이나 민감한 정보가 터미널에 그대로 노출될 수 있습니다. 프로덕션 환경이나 공개된 장소에서는 주의해서 사용하거나 출력 내용을 필터링하는 것이 좋습니다.
  1. 파일 업로드 (`-F`) — `multipart/form-data` 형식으로 파일을 첨부하여 보냅니다. 필드명과 파일 경로를 지정합니다.
    curl -X POST -F "profile_image=@/path/to/your/image.jpg" -F "username=tester" https://api.example.com/upload
  2. 응답 헤더 확인 (`-i`) — 서버 응답 본문과 함께 HTTP 응답 헤더를 함께 보여줍니다. 상태 코드와 헤더 정보를 확인하여 문제를 진단할 수 있습니다.
    curl -i https://api.example.com/status
  3. 상세 디버깅 정보 확인 (`-v`) — 요청부터 응답까지의 모든 통신 과정을 상세하게 출력합니다. HTTP 헤더, SSL 핸드셰이크, 리다이렉션 등을 포함합니다.
    curl -v https://api.example.com/debug
정리

`curl`은 단순한 명령줄 도구가 아니라 API 개발과 테스트에 필수적인 강력한 파트너입니다. 이 글에서 다룬 기본 호출부터 인증, 헤더, 복잡한 데이터 형식 처리, 파일 업로드, 그리고 고급 디버깅 기법까지 숙달하면 개발 시간을 획기적으로 단축하고 문제 해결 능력을 크게 향상시킬 수 있습니다.

지금 바로 적용해 보세요.

참고 자료

동영상으로 보는 curl 명령어 API 호출 실전

글로 충분하지 않다면 관련 영상을 함께 보세요. 클릭하면 YouTube에서 검색 결과로 이동합니다.

▶ YouTube에서 “curl 명령어 API 호출 실전” 영상 보기

자주 묻는 질문

Q. curl로 API에 간단한 GET 요청을 보내고 응답을 확인하는 가장 기본적인 방법은 무엇인가요?

A. 가장 기본적으로 `curl ` 명령어를 사용하면 됩니다. 응답 본문과 함께 헤더까지 보고 싶다면 `-i` 또는 `–include` 옵션을 추가하고, 헤더만 확인하고 싶다면 `-I` 또는 `–head` 옵션을 사용하세요. 이를 통해 API가 올바르게 응답하는지 빠르게 확인할 수 있습니다.

Q. curl로 POST나 PUT 요청 시 JSON 데이터를 API에 전송하려면 어떻게 해야 하나요?

A. 먼저 `-X POST` 또는 `-X PUT`으로 HTTP 메서드를 지정합니다. 이어서 `-H “Content-Type: application/json”` 헤더를 추가하여 전송할 데이터가 JSON 형식임을 알리고, `-d ‘{“key”: “value”}’`와 같이 `-d` 옵션 뒤에 JSON 페이로드를 전달합니다. 문자열 내 따옴표 문제는 백슬래시(`\`)로 이스케이프하거나 전체 JSON 문자열을 작은따옴표로 감싸 해결할 수 있습니다.

Q. API 호출 시 인증 정보(예: API 키, Bearer 토큰)를 curl 요청에 어떻게 포함해야 하나요?

A. 대부분의 경우 HTTP 헤더를 통해 인증 정보를 전달합니다. API 키를 사용한다면 `-H “X-API-Key: YOUR_API_KEY”`와 같이 사용자 정의 헤더를 사용하고, Bearer 토큰 방식이라면 `-H “Authorization: Bearer YOUR_BEARER_TOKEN”` 형태로 `Authorization` 헤더를 추가하면 됩니다. 이 헤더들은 API 서버가 요청을 인증하는 데 필수적입니다.

Q. curl로 API 호출이 제대로 작동하지 않을 때, 무엇이 문제인지 디버깅하는 효과적인 방법은 무엇인가요?

A. `-v` 또는 `–verbose` 옵션을 사용하면 curl이 수행하는 모든 단계(요청 헤더, 응답 헤더, SSL 핸드셰이크 등)를 상세하게 출력하여 문제를 파악하는 데 큰 도움이 됩니다. 또한, `-sS` 옵션은 진행 상황을 숨기고 오류 메시지만 표시하여 문제의 원인을 깔끔하게 확인할 수 있게 해줍니다. 이 정보들을 분석하면 헤더 누락, 잘못된 URL, 인증 오류 등 다양한 문제점을 찾아낼 수 있습니다.



댓글 남기기

Mebys Blog에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기