Curl 사용법 정리
≡ 목차 (Table of Contents)
이 글은 Curl의 일반적인 사용법을 정리한다. 약간 특수한 사용법은 Curl의 약간 특별한 사용법을 참고하자.
사이트 응답 확인하기
가장 기본적인 사용법으로 그냥 URL을 붙이면 응답을 얻을 수 있다.
curl https://google.com
응답(body)이 화면에 그냥 출력된다는 점에 유의하자. wget과는 다르다.
요청 응답 상세 보기
-v
(Verbose) 옵션을 줄 경우 상세한 로그도 함께 표시된다.
curl -v https://google.com
내용 중에는 요청하는 헤더와 리퀘스트, 그리고 응답으로 오는 헤더와 내용(body)을 전부 확인할 수 있다. 리다이렉트되는 페이지를 확인하려면 헤더까지 확인하지 않으면 제대로 알 수 없는 데 이럴 때 쓸 만하다.
커스텀 헤더
-H
옵션을 이용해 헤더를 정의할 수 있다.
curl -H 'Foo: Bar' https://foo.bar
당연하겠지만 foo.bar 라는 사이트가 실존하지는 않는다. 그냥 저기에 사이트 주소가 들어가야 한다.
일반적인 POST
POST로 폼(form) 데이터를 함께 요청하려면 -d
옵션을 쓸 수 있다.
curl -d 'key=value' -d 'foo=bar' https://foo.bar
JSON 데이터를 POST 하려면 헤더가 별도로 필요하다.
curl -H 'Content-Type: application/json' -d '{"foo": "bar"}' https://foo.bar
-d
옵션과 -F
옵션은 같이 쓸 수가 없다. 멀티파트를 쓴다면 아래 파일 업로드 항목을 참고하자.
파일 업로드
파일을 업로드 하려면 -F
혹은 --form
옵션을 사용할 수 있다.
curl -F 'file=@/foo/bar/path' -F 'key=value' https://foo.bar
요청은 POST로 multipart/form-data
형식으로 날아간다.
위의 예에서 파일 경로 앞에 골뱅이 @
가 붙어있는데 오타가 아니라 파일을 구분하는 요소다. 반면 key=value
라는 폼 데이터에는 골뱅이가 안 붙어 있는데 파일이 아닌 일반 폼 데이터라 그렇다.
-d
옵션과 -F
옵션은 중복으로 사용할 수 없다. 따라서 파일을 첨부한 경우 모든 폼 데이터는 -F
옵션으로 넘겨주어야 한다.
요청 메소드(Request Method)
GET
이나 POST
는 자주 쓰이는 만큼 위에서 다뤘는데 만약 만약 PUT
이나 DELETE
같은 메소드를 쓰고 싶다면 어떻게 해야 할까?
이럴 때는 별도로 -X
옵션을 이용해야 한다.
curl -X PUT -d 'foo=bar' https://foo.bar
REST API를 개발할 때 테스트 용도로 자주 쓸 만하다.
파일 다운로드
일반적인 테스트 내용물의 경우 그냥 라다이펙트 시켜서 파일로 받을 수 있다.
curl https://foo.bar > foobar.html
하지만 이보다는 별도의 --output
옵션을 사용하는 편이 좋다.
curl https://foo.bar/path/to/image.jpg --output downloaded_image.jpg