ㅇ.ㅇ
[DEV] curl 본문
반응형
curl이란?
curl은 'Client URL'의 줄임말로, 다양한 프로토콜(HTTP, HTTPS, FTP 등)을 이용해 데이터를 전송할 수 있는 커맨드라인 기반 도구이다. 주로 서버와의 통신 테스트, API 호출, 파일 다운로드 등에 사용된다. HTTP 요청을 빠르게 테스트하거나, 스크립트 안에서 네트워크 요청을 자동화해야 할 때 아주 유용하게 쓰인다.
언제 사용하면 좋을까?
- 백엔드 API를 빠르게 테스트하고 싶을 때
- Postman 없이 CLI에서 바로 API 요청을 보내고 싶을 때
- 서버 상태를 확인하고 싶을 때 (GET 요청 등)
- 파일 업로드/다운로드를 자동화하고 싶을 때
- CI/CD 파이프라인에서 외부 API를 호출할 때
- 서버의 응답 헤더 및 바디를 확인하고 싶을 때
기본 명령어
curl [옵션] [URL]
// 예시 : 간단한 GET 요청
curl https://test.com/api/test
자주 쓰는 옵션들
1. -X : 요청 메서드 지정
curl -X POST https://test.com/api/post
// 기본은 GET이지만, 명시적으로 POST나 PUT 같은 메서드를 지정할 때 사용.
2. -H / --header : 헤더 추가
curl -H "Content-Type: application/json" -H "Authorization: Bearer {token}" https://test.com/api
3. -d / --data : 요청 본문 데이터 전송 (POST, PUT 등)
curl -X POST -H "Content-Type: application/json" -d '{"name": "test"}' https://test.com/api
4. -o / -O : 응답을 파일로 저장
curl -o test.html https://test.com # 저장 파일명 지정
curl -O https://test.com/image.png # 원래 이름으로 저장
5. -L / --location : 리다이렉션 따라가기
curl -L http://test.com # 301/302 응답 시 자동으로 이동
6. -i : 응답 헤더 포함해서 출력
curl -i https://test.com/api/hello
7. -v / --verbose : 요청/응답 전체 흐름 보기 (디버깅에 유용)
curl -v https://test.com
8. -u / --user : 기본 인증
curl -u username:password https://test.com
9. --https2 : HTTP/2로 요청
curl --http2 https://test.com
보통 그래서 어떻게 사용하지?
1. API 호출 + 응답 보기
curl -X POST https://api.test.com/items \
-H "Content-Type: application/json" \
-d '{"title": "테스트", "my_money": 1000}'
2. 파일 업로드/다운로드
// 다운로드
curl -O https://test.com/image.jpg
// 업로드
curl -X POST -F "file=@test.txt" https://test.com/upload
그 외
- curl --help : 옵션 전체 목록 확인 가능
- man curl : 매뉴얼 문서 보기
- jq와 함께 쓰면 JSON 응답을 예쁘게 보기 좋다
curl -s https://test.com/api | jq
나는 지금까지 curl 명령어를 단순히 서버가 살아있는지, 정상작동하는지만 확인하는 용도로 사용했었다. 이번에 여러 옵션을 알게되어 postman 테스트가 불가할 시에나, 디버깅할 때도 사용해보면 좋을 것 같다는 생각을 했다! jq도 매번 써봐야지!
반응형
'Today I Learned' 카테고리의 다른 글
[Spring] RestTemplate (0) | 2025.04.09 |
---|---|
[Git] Rebase (0) | 2025.03.31 |
[Tomcat] Tomcat의 war-tracker 파일 (0) | 2025.03.28 |
[Git] Stash (0) | 2025.03.23 |
[Java] META-INF 디렉토리와 MANIFEST.MF (0) | 2025.03.12 |