cURL 명령 파서
cURL 명령을 메서드·URL·헤더·바디로 분해해 보여줍니다.
개발자 도구나 API 문서, 동료가 보내준 curl 명령은 한 줄에 메서드·URL·헤더·바디가 뒤섞여 있어 한눈에 파악하기 어렵습니다. 이 cURL 명령 파서는 붙여넣은 명령을 따옴표까지 인지하는 토크나이저로 분해해 HTTP 메서드, 요청 URL, 헤더 목록, 요청 바디를 깔끔하게 표로 정리해 줍니다.
크롬·파이어폭스 개발자 도구의 “Copy as cURL”로 복사한 긴 명령, 줄 끝 백슬래시(\)로 여러 줄에 걸친 명령도 그대로 붙여넣을 수 있습니다. 모든 분석은 브라우저 안에서만 처리되며 입력한 명령은 외부로 전송되지 않습니다.
무엇을 추출하나요
입력한 cURL 명령에서 다음 네 가지 요소를 인식해 분리합니다.
- 메서드:
-X또는--request값을 사용합니다. 명시가 없으면 바디(-d등)가 있을 때POST, 없으면GET으로 추정합니다. - URL: 옵션이 아닌 첫 번째 인자(또는
--url값)를 요청 대상으로 봅니다. - 헤더: 여러 개의
-H/--header값을이름: 값쌍으로 나눠 표시합니다. - 바디:
-d,--data,--data-raw,--data-binary값을 요청 본문으로 모읍니다.
따옴표와 줄바꿈 처리
토크나이저는 작은따옴표와 큰따옴표로 감싼 값을 하나의 토큰으로 묶고, 따옴표 안의 공백은 분리하지 않습니다. 줄 끝의 백슬래시는 줄 연속으로 간주해 다음 줄과 이어 붙입니다. 따라서 셸에서 보기 좋게 줄을 나눠 둔 명령도 그대로 붙여넣으면 됩니다.
활용 예시
- 브라우저 네트워크 탭에서 요청을 “Copy as cURL”로 복사합니다.
- 여기에 붙여넣어 어떤 헤더(인증 토큰, Content-Type 등)와 바디가 실제로 전송되는지 확인합니다.
- 의도한 메서드·헤더가 맞는지 검증하거나, 문서/이슈에 옮길 때 구조를 빠르게 파악합니다.
반대로 새 요청을 처음부터 만들고 싶다면 cURL 명령 생성기에서 메서드·헤더·바디를 입력해 실행 가능한 명령을 조립할 수 있습니다.
인식하는 옵션과 짧은/긴 형태
cURL은 같은 기능에 짧은 플래그와 긴 플래그를 동시에 제공합니다. 이 파서가 어떤 옵션을 어떻게 매핑하는지 정리했습니다.
| 옵션 (짧은 / 긴 형태) | 매핑되는 요소 | 비고 |
|---|---|---|
-X / --request | 메서드 | 값 그대로 사용 (예: PUT, DELETE) |
-H / --header | 헤더 | 첫 번째 : 기준으로 이름/값 분리 |
-d / --data / --data-raw / --data-binary | 바디 | 존재 시 메서드를 POST로 추정 |
--url | URL | 옵션이 아닌 첫 인자보다 명시적 |
--compressed / -L / -k / -s | (무시) | 전송 방식 플래그라 메서드·헤더·바디에 영향 없음 |
분석 예시 한 단계씩
아래 명령을 붙여넣었다고 가정해 봅니다.
curl https://api.example.com/v1/users -H 'Authorization: Bearer abc.def' -H 'Content-Type: application/json' -d '{"name":"Lee"}'
파서는 다음과 같이 해석합니다.
- 메서드:
-X가 없지만-d바디가 있으므로POST로 추정. - URL: 옵션이 아닌 첫 인자
https://api.example.com/v1/users. - 헤더:
Authorization → Bearer abc.def,Content-Type → application/json두 줄. - 바디:
{"name":"Lee"}(작은따옴표 안 공백·중괄호가 하나의 토큰으로 보존됨).
흔한 실수 / 함정
- 윈도우 vs. 셸 따옴표: 윈도우 cmd에서 복사한 명령은 헤더를 큰따옴표(
")로, 리눅스/맥은 작은따옴표(')로 감싸는 경우가 많습니다. 한 명령에 두 스타일이 섞이면 따옴표 짝이 어긋나 토큰이 깨질 수 있으니 한 가지로 통일해 붙여넣으세요. - 붙은 옵션:
-XPOST처럼 플래그와 값을 붙여 쓴 형태는-X POST로 띄워 주는 편이 안전합니다. - JSON의
:혼동: 헤더는 첫 콜론에서만 이름/값을 나누므로Authorization: Bearer x:y의 뒤쪽:는 값에 그대로 남습니다.