Network Programming을 하다보면, curl을 이용해서 간단하게 테스트할 일이 종종 있다.
맨날 사용하는 개발자라면, 머릿속에 curl 사용법이 있어서 금방 명령어를 만들어서 사용하겠지만 나처럼 1년에 5번 정도 사용하는 사람은 매번 검색하는 것도 일이고 시간 낭비이다.
그래서 자주 사용하는 명령 패턴을 메모를 좀 남겨놓고 필요할 때마다 Copy & Paste 해볼까 한다.
설치
아래 명령처럼 설치한다.
##
## Ubuntu 리눅스
##
$ apt install curl
## CentOS, RedHat Linux(RHEL)
$ yum install curl
CURL 명령의 주요 옵션
-X (--request)
HTTP Method.
예를 들어 GET(조회), POST(데이터 생성), PUT(전체 내용 변경), DELETE, PATCH(일부 내용 변경)
-d (--data)
POST, PUT 메소드로 요청시 HTTP Body에 담아서 보낼 데이터
-H (--header)
HTTP Header 항목과 값을 정의
CURL 명령 예제
GET Method 예제
##
## Example - OCP에서 Node 정보를 가져오는 명령
##
TOKEN=$(oc whoami -t)
ENDPOINT="https://api.ocp.mycluster.io:6443"
NAME="worker1.ocp.mycluster.io"
curl -k \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
-X GET $ENDPOINT/api/v1/nodes/$NAME/status
##
## Example - 요청 메시지에 Data를 포함하여 전송하기
##
curl -d "mykey1=myvalue1&mykey2=myvalue2" \
-H "Content-Type: application/x-www-form-urlencoded" \
-X GET http://mywebserver.example/api/v1
##
## Example - Query Parameter 형태로 요청 메시지를 전송하는 경우
## 이 때는 특수문자 또는 공백 문자 때문에 urlencode 처리를 해야 한다.
##
## 참고로, 아래 예시는 OCP Pod의 Memory 사용량 조회하는 API를 Call하는 것이다.
##
RESPONSE_FILE=curl-metric-node-cpu.json
curl -s -k -o $RESPONSE_FILE\
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
--data-urlencode "query=instance:node_memory_utilisation:ratio{job=\"node-exporter\", instance=\"worker4.ocp.mycluster.io\", cluster=\"\"} != 0" \
$ENDPOINT/api/v1/query
POST Method 예제
##
## Example - URL 형식의 Data 전송
##
$ curl -d "mykey1=myvalue1&key2=myvalue2" \
-H "Content-Type: application/x-www-form-urlencoded" \
-X POST http://my.webserver.example/api
##
## Example - JSON 형식의 Data 전송
##
$ curl -d '{"mykey1":"myvalue1", "mykey2":"myvalue2"}' \
-H "Content-Type: application/json" \
-X POST http://my.webserver.example/api