curl
본 포스팅은 curl 을 알아보는 내용입니다.
1. curl 이란?
-
curl (client url) 이란 프로토콜을 이용해 URL 로 데이터를 전송하여 서버에 데이터를 보내거나 가져올때 사용하기 위한 명령줄 도구 및 라이브러리이다.
-
예를들면 자바스크립트 환경에서 REST API (http) 를 테스트 하고 싶다면 ajax, fetch 를 이용해 요청을 보내느것과 동일하다.
-
쉘 (커맨드라인 환경) 에서 REST API (http) 테스트를 하고 싶을때 curl 명령어를 이용하면 된다고 이해하면 된다.
-
이밖에 HTTP / HTTPS / FTP / LDAP / SCP / TELNET / SMTP / POP3 등 다양하고 주요한 프로토콜을 지원하며 Linux/Unix 계열 및 Windows 등 주요한 OS 에서 구동되므로 여러 플랫폼과 OS에서 유용하게 사용할 수 있다.
-
이렇게 다양하고 강력한 기능을 가진 옵션들을 제공하지만, 보통 특정 서버에서 빠르게 방화벽 예외 상태를 테스트 하거나, REST 서비스 테스트를 위해 사용되는 편이다.
2. curl 설치
- Linux나 Mac OS 에는 curl 명령어 패키지가 기본 탑재되어 있다.
- Window에서도 설치하여 사용할수 있지만 일반적으로 윈도우에는 편리하게 사용 가능한 tool이나 Postman과 같은 프로그램들이 많기 때문에 잘 사용하지 않는 편이긴 하다.
3. curl 명령어 옵션
- 특정 URL을 대상으로 동작하며 URL 앞에는 curl의 옵션을 사용하면 된다.
- curl 명령의 옵션은 하이픈 하나(-)로 시작하는 short 형식과 하이픈 두개(–)로 시작하는 long 형식 모두 지원한다.
$ curl [options...] <url>
$ curl --help all # 전체 명령어 보기
4. curl http 메서드
- GET 요청
$ curl www.example.com $ curl -X GET www.example.com # GET방식은 Body 없음 # -X 요청메소드 종류 명시
- POST 요청
# url 형식 데이터 $ curl -d "key1=value1&key2=value2" \ -H "Content-Type: application/x-www-form-urlencoded" \ -X POST http://localhost:8080/data # -d 옵션으로 body 데이터를 기재 # -H 옵션으로 전송할 헤더 지정 (디폴트 : application/x-www-form-urlencoded) # -X 옵션으로 POST 메소드 지정하고 요청할 url명시 # JSON 형식 데이터 $ curl -d '{"key1":"value1", "key2":"value2"}' \ -H "Content-Type: application/json" \ -X POST http://localhost:8080/data # 파라미터값을 파일로 지정해서 보내기 curl -d "@data.txt" -X POST http://localhost:8080/data curl -d "@data.json" -X POST http://localhost:8080/data
- PUT 요청
$ curl -X PUT -d 'name=inpa&email=inpa@gmail.com' http://localhost:8080/user/100 $ curl -X PUT -H "Content-Type: application/json" -d '{"name":"inpa","email":"inpa@gmail.com"}' http://localhost:8080/user/100 # 파일명으로 PUT $ curl -T filename.txt http://www.example.com/dir/
- PUT 요청
$ curl -X DELETE http://localhost:8080/user/100
5. 참고문헌
- https://curl.se/docs/