curl 주요 사용법 요약
주요 사용법만 축약한 페이지고 전체 내용은 curl 설치 및 사용법 을 참고하세요.
주요 옵션
옵션 | 설명 |
---|---|
-k | https 사이트를 SSL certificate 검증없이 연결합니다. |
-L | 서버에서 HTTP 301 이나 HTTP 302 응답이 왔을 경우 redirection URL 로 따라갑니다. --max-redirs 뒤에 숫자로 redirection 을 몇 번 따라갈지 지정할 수 있으며기본 값은 50입니다 |
-v | 동작하면서 자세한 옵션을 출력합니다. |
-o | curl 은 remote 에서 받아온 데이타를 -o 옵션 뒤에 적어준 FILE 명으로 저장합니다. |
-d | HTTP Post 방식으로 데이타를 전송합니다. |
-u | HTTP 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)를 지정하며 구분을 위해 : 를 주어야 합니다.
curl -u userid:password http://www.example.com/user.html
HTTP Bearer token 인증
OAuth 나 JWT 등에 사용하는 Bearer token 을 사용하려면 -H 옵션뒤에 'Authorization: Bearer {TOKEN}' 를 추가하며 {TOKEN} 은 실제 토큰으로 변경하면 되며 아래는 12345 라는 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 응답을 포맷팅
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq .
서버의 json 배열중 3번째 배열 추출합니다.
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.[2]'