URL을 사용하여 데이터를 전송하기 위한 명령줄 도구 및 라이브러리이다, SHELL(커맨드라인 환경)에서 REST API(http) 테스트 하고 싶으면 curl 명령어를 이용하면 된다 라고 이해하면 된다.
이밖에 HTTP / HTTPS / FTP / LDAP / SCP / TELNET / SMTP / POP3 등 다양하고 주요한 프로토콜을 지원하며 Linux/Unix 계열 및 Windows 등 주요한 OS 에서 구동되므로 여러 플랫폼과 OS에서 유용하게 사용할 수 있다. 이렇게 다양하고 강력한 기능을 가진 옵션들을 제공하지만, 보통 특정 서버에서 빠르게 방화벽 예외 상태를 테스트 하거나, REST 서비스 테스트를 위해 사용되는 편이다.
자주 사용하는 옵션은 아래 3가지이다.
-d, --data: Send specified data in POST request.
-H, --header:
Headers to supply with request.-X, --request: The request method to use. ex) GET, POST
curl -X GET "http://localhost:8000/hello?age=30"
// GET방식은 Body 없음
// 원도우 curl 주소 앞뒤에 '가 아닌 "로 감싸야 함
// 리눅스 curl 주소 앞뒤는 ' 감싸기도 가능하고 " 감싸기도 가능함
curl -d "key1=value1&key2=value2" \
-H "Content-Type: application/x-www-form-urlencoded" \
-X POST http://localhost:8000/data
curl -d '{"key1":"value1", "key2":"value2"}' \
-H "Content-Type: application/json" \
-X POST http://localhost:8000/data
// 원도우 curl에서는 '를 "로 변경하고, "를 ""로 변경하고 호출해야함
curl -d "{""key1"":""value1"", ""key2"":""value2""}" \
-H "Content-Type: application/json" \
-X POST http://localhost:8000/data