curl 유용한 사용법 몇가지

curl 유용한 사용법 몇가지
curl은 REST API 방식으로 개발하는 경우 필수적인 요소인듯 싶다.
몇가지 간단한 사용법만 알아보자.

1. GET 방식으로 보내기
curl http://host_address:port

2. 헤더정보 받기.
curl -i http://host_address:port

3. 오직 헤더만 받기.
curl -s    -o /dev/null    -w "%{http_code}\n" http://host_address:port

4. Header 추가해서 요청하기.
curl -H "Content-Type: application/json" http://host_address::port

5. POST 방식으로 보내기
curl -X POST http://host_address:port -d '{"key":"value", "key2":"value2"}'

6. 서버의 파일 저장하기. (내가 원하는 이름으로)
curl -o filename.txt http://host_address:port/fileurl

7. 서버의 파일 다운로드 하기 (서버에 있는 이름 그대로)
curl -O http://host_address:port/fileurl

8. 처리 시간 알아보기.
curl http://host_address:port/url -w "%{time_connect} + %{time_starttransfer} = %{time_total}"

%{time_connect} : 서버 접속시간
%{time_starttransfer} : 파일 전송시간
%{time_total} : 총 처리되어서 전송된 시간 (여기에는 서버 내부에서 실행된 시간도 포함이 된다. )

기타 나머지 : 
> curl --manual 


Available --write-out variables

Some of these variables are not available in really old curl versions.
  • %{content_type} shows the Content-Type of the requested document, if there was any.
  • %{filename_effective} shows the ultimate filename that curl writes out to. This is only meaningful if curl is told to write to a file with the --remote-name or --output option. It's most useful in combination with the --remote-header-name option.
  • %{ftp_entry_path} shows the initial path curl ended up in when logging on to the remote FTP server.
  • %{response_code} shows the numerical response code that was found in the last transfer.
  • %{http_connect} shows the numerical code that was found in the last response (from a proxy) to a curl CONNECT request.
  • %{local_ip} shows the IP address of the local end of the most recently done connection—can be either IPv4 or IPv6
  • %{local_port} shows the local port number of the most recently made connection
  • %{num_connects} shows the number of new connects made in the recent transfer.
  • %{num_redirects} shows the number of redirects that were followed in the request.
  • %{redirect_url} shows the actual URL a redirect would take you to when an HTTP request was made without -L to follow redirects.
  • %{remote_ip} shows the remote IP address of the most recently made connection—can be either IPv4 or IPv6.
  • %{remote_port} shows the remote port number of the most recently made connection.
  • %{size_download} shows the total number of bytes that were downloaded.
  • %{size_header} shows the total number of bytes of the downloaded headers.
  • %{size_request} shows the total number of bytes that were sent in the HTTP request.
  • %{size_upload} shows the total number of bytes that were uploaded.
  • %{speed_download} shows the average download speed that curl measured for the complete download in bytes per second.
  • %{speed_upload} shows the average upload speed that curl measured for the complete upload in bytes per second.
  • %{ssl_verify_result} shows the result of the SSL peer certificate verification that was requested. 0 means the verification was successful.
  • %{time_appconnect} shows the time, in seconds, it took from the start until the SSL/SSH/etc connect/handshake to the remote host was completed.
  • %{time_connect} shows the time, in seconds, it took from the start until the TCP connect to the remote host (or proxy) was completed.
  • %{time_namelookup} shows the time, in seconds, it took from the start until the name resolving was completed.
  • %{time_pretransfer} shows the time, in seconds, it took from the start until the file transfer was just about to begin. This includes all pre-transfer commands and negotiations that are specific to the particular protocol(s) involved.
  • %{time_redirect} shows the time, in seconds, it took for all redirection steps including name lookup, connect, pre-transfer and transfer before the final transaction was started. time_redirect shows the complete execution time for multiple redirections.
  • %{time_starttransfer} shows the time, in seconds, it took from the start until the first byte was just about to be transferred. This includes time_pretransfer and also the time the server needed to calculate the result.
  • %{time_total} shows the total time, in seconds, that the full operation lasted. The time will be displayed with millisecond resolution.
  • %{url_effective} shows the URL that was fetched last. This is particularly meaningful if you have told curl to follow Location: headers (with -L).