curl 주요 사용법 요약

주요 사용법만 축약한 페이지고 전체 내용은 curl 설치 및 사용법 을 참고하세요.

주요 옵션

옵션설명
-khttps 사이트를 SSL certificate 검증없이 연결합니다.
-L

서버에서 HTTP 301 이나 HTTP 302 응답이 왔을 경우 redirection URL 로 따라갑니다.

--max-redirs 뒤에 숫자로 redirection 을 몇 번 따라갈지 지정할 수 있으며기본 값은 50입니다

-v동작하면서 자세한 옵션을 출력합니다.
-ocurl 은 remote 에서 받아온 데이타를 -o 옵션 뒤에 적어준 FILE 명으로 저장합니다.
-dHTTP Post 방식으로 데이타를 전송합니다.
-uHTTP Basic Auth에 사용할 Id 와 암호를 지정합니다.
-H전송시 추가할 HTTP Header 를 기술합니다.

서버에서 다운로드

대문자 -O 옵션을 주면 URL의 맨 뒤에 있는 resource 명인 bc-1.07.1.tar.gz 로 파일을 저장합니다.

서버의 파일이름으로 저장
curl -O  http://ftp.gnu.org/gnu/bc/bc-1.07.1.tar.gz


소문자 -o 옵션 뒤에 지정한 filename 으로 저장하며 아래 예제는 bc.tgz 로 파일을 저장합니다.

파일명 지정 저장
curl -o bc.tgz  http://ftp.gnu.org/gnu/bc/bc-1.07.1.tar.gz

HTTP Basic auth


-u 뒤에 로그인할 id(userid)와 암호(password)를 지정하며 구분을 위해 : 를 주어야 합니다.

Basic Auth
curl -u userid:password http://www.example.com/user.html

HTTP Bearer token 인증

OAuth 나 JWT 등에 사용하는 Bearer token 을 사용하려면 -H 옵션뒤에  'Authorization: Bearer {TOKEN}' 를 추가하며 {TOKEN} 은 실제 토큰으로 변경하면 되며 아래는 12345 라는 token 에 서버에 전송하는 예제입니다.

Bearer token 인증
curl -L -X POST -H 'Accept: application/json' -H 'Authorization: Bearer 12345' 'https://www..example.com/api/myresource'


POST 로 data 전송


데이타 파일을 보내는 -d 옵션 뒤에 전송할 json 데이타를 적어주고 헤더를 추가하는 -H 옵션으로 "Accept: application/json" 와 "Content-Type: application/json" 를 기술합니다.

curl -u userid:password -L -v -d '{"name": "superman", "age" : 30}' -H "Accept: application/json" -H "Content-Type: application/json" 'https://postman-echo.com/post'


큰 데이타의 경우 커맨드에 내용을 적어줄 수 없으므로 파일로 저장하고 -d 옵션뒤에 파일을 지정하는 키워드인 @FILENAME 을 사용합니다. 아래는 my-json-file 내용을 json 형식으로 보내는 예제입니다.

curl -u userid:password -L -v -d @my-json-file -H "Accept: application/json" -H "Content-Type: application/json" 'https://postman-echo.com/post'


jq 와 연동

명령행 JSON 처리기인 jq 를 활용해서 서버의 JSON 응답을 포맷팅

jq 로 json 포맷팅
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq .


서버의 json 배열중 3번째 배열 추출합니다.

jq 로 json 포맷팅
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.[2]'


같이 보기