Curl?
curl은 다양한 프로토콜을 지원하는 데이터 전송용 Command Line Tool이다.
DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet, TFTP... 많네요.
리눅스에서는 내장이 아니므로 사용하기 위해 당연히 설치해야 한다.
sudo apt-get install curl
필자의 윈도우에는 curl이 이미 설치되어 있었다. curl --version로 확인해보자
C:\Users\PC>curl --version
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
Release-Date: [unreleased]
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL
cURL 간략한 사용 방법
curl https://www.google.com
curl -i https://www.google.com
- method 명시 없이 그냥 쓰면 GET이다.
- -i : 헤더 + 바디 가져오기
- -I : 헤더만 가져오기
curl -X POST \
-H "X-Parse-Application-Id: parse-app-id" \
-H "X-Parse-REST-API-Key: parse-api-key" \
-H "Content-Type: application/json" \
-d '{"score":1337,"playerName":"Sean Plott","cheatMode":false}' \
https://api.parse.com/1/classes/GameScore
- -X : method
- -H : http header
- -d : http POST data. 이 옵션을 주면 method가 자동으로 POST로 지정된다.
-d, -H, -X를 자주 사용한다.
-d, --data: <data> Send specified data in POST request.
-H, --header: <header> Headers to supply with request.
-X, --request: The request method to use. ex) GET, POST
따라서 자주 사용하는 꼴은 다음과 같이 된다.
curl -d "key1=value1&key2=value2" \
-H "Content-Type: application/x-www-form-urlencoded" \
-X POST http://localhost:8000/data
window curl에서 주의할 점이 있다.
# 원도우 curl에서는 '를 "로 변경하고, "를 ""로 변경하고 호출해야한다.
curl -d "{""key1"":""value1"", ""key2"":""value2""}" \
-H "Content-Type: application/json" \
-X POST http://localhost:8000/data
워낙 옵션이 많아서 다 외우기보다 필요할 때 찾아보자
www.lesstif.com/software-architect/curl-http-get-post-rest-api-14745703.html
www.serverguide.co.kr/entry/curl-CURL-%EC%82%AC%EC%9A%A9%EB%B2%95
curl 방식으로 mailgun을 사용해보자
mailgun 패키지를 설치하지 않고 curl 요청을 보내는 것을 응용하여 메일을 보내보려고 합니다.
curl -s --user 'api:YOUR_API_KEY' \
https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/messages \
-F from='Excited User <mailgun@YOUR_DOMAIN_NAME>' \
-F to=YOU@YOUR_DOMAIN_NAME \
-F to=bar@example.com \
-F subject='Hello' \
-F text='Testing some Mailgun awesomeness!'
사용된 옵션에 대한 설명은 다음과 같다.
-s
정숙 모드. 진행 내역이나 메시지등을 출력하지 않는다. -o 옵션으로 remote data 도 /dev/null 로 보내면 결과물도 출력되지 않는다
--user
--user (or -u) in curl provides a basic auth to your request.
조금 자세히 설명해보자. curl에 -v(verbose)를 찍어서 --user에 아무 값이나 주어보았다.
curl https://cineps.net -v --user hello
Enter host password for user 'hello': ...
// http 메세지를 해보니
> GET / HTTP/1.1
> Host: cineps.net
> Authorization: Basic aGVsbG86ZWFkZ2I=
> User-Agent: curl/7.55.1
> Accept: */*
Authorization 헤더에 Basic [base64 encoded text] 가 전달되는 것을 확인할 수 있다.
username:password 꼴의 텍스트를 base64로 인코딩한 것이다.
Basic은 http 인증에 가장 일반적인 스킴이며 oauth나 realm 등 여러 스킴이 존재합니다.
mailgun의 경우에는 api:[your api key] 꼴이니 이를 base 64 형식으로 인코딩해주면 되겠다.
-F
form-data (-d와의 차이는 ec.haxx.se/http/http-postvspost 여기를 참고)
'미분류 > Tip' 카테고리의 다른 글
pwa 전반에 대한 지식들과 서비스워커 (0) | 2021.01.23 |
---|---|
웹 최적화를 위한 프로파일링 및 속도 개선 툴 (0) | 2020.12.05 |
왜 Web Component를 사용하는가? (0) | 2020.11.14 |
Twilio를 활용한 SMS 서비스 구현하기 (0) | 2020.11.03 |
구글 검색 결과에 도메인 대신 IP가 노출될 경우 문제점과 해결방법 (2) | 2020.10.11 |