Recent Posts
Recent Comments
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
관리 메뉴

ㅇ.ㅇ

[DEV] curl 본문

Today I Learned

[DEV] curl

yun_ 2025. 3. 30. 11:43
반응형

 

 

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