curl은 REST API 방식으로 개발하는 경우 필수적인 요소인듯 싶다.
몇가지 간단한 사용법만 알아보자.
1. GET 방식으로 보내기
2. 헤더정보 받기.
3. 오직 헤더만 받기.
4. Header 추가해서 요청하기.
5. POST 방식으로 보내기
6. 서버의 파일 저장하기. (내가 원하는 이름으로)
7. 서버의 파일 다운로드 하기 (서버에 있는 이름 그대로)
8. 처리 시간 알아보기.
%{time_connect} : 서버 접속시간
%{time_starttransfer} : 파일 전송시간
%{time_total} : 총 처리되어서 전송된 시간 (여기에는 서버 내부에서 실행된 시간도 포함이 된다. )
기타 나머지 :
> curl --manual
몇가지 간단한 사용법만 알아보자.
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
).