마니의 공부방/Os_Linux

[curl] curl의 주요사용법

API 서버를 개발할때, rest 호출을 많이 하곤 합니다.

개발 후 테스트를 할때, 주로 jmeter나 postman 같은 유틸리티를 사용하여 작업합니다.

 

이런 유틸리티가 설치된 PC가 클라이언트가 API서버를 호출하는 경우에는 사용이 가능하지만, 간혹 유틸리티를 설치할수 없는 환경(서버, 혹은 mac 등의 유틸리티가 없는 경우)에서는 테스트에 어려움이 있습니다.

 

예를들면, 내가 개발한 서버에서 외부 API를 연동하는데 노트북에서는 외부 API호출이 잘되는데.. 서버에만 올려서 하면 외부 API호출이 안된다 할때~(이럴때는 리턴값과 로그부터 확인해야겠지만요 ^^)

이럴때 (개발)서버에서 커맨드라인으로 직접 외부 API 를 호출해서 테스트하는 경우가 있을수 있습니다.

 

이때 주로 curl을 사용하여 테스트를 진행한 경험이 있어, 같은 경우을 대비하여 다시 기억을 되짚어 정리해봅니다.

 

curl이 뭔데?

curl은 다양한 통신 프로토콜을 이용하여 데이터를 전송하기 위한 라이브러리와 명령 줄 도구를 제공하는 컴퓨터 소프트웨어 프로젝트이다. 한마디로 애도 유틸은 유틸이죠 ^ㅁ^ (편하고 적재적소에 잘사용하면 장땡이지 뭐)

 

지원하는 프로토콜

DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet, TFTP, SSL

 

설치방법

윈도우와 리눅스는 설치방법이 다릅니다. 리눅스는 wget 혹은 yum을 통해서 간단히 설치가능하고, 윈도우는 다운로드후 installer를 통해 설치하면 됩니다. 설치방법은 os 및 버전에 따라 상이한부분들이 있어서 생략하겠습니다.

 

curl GET 방식 호출

curl -X GET  "http://127.0.0.1:8080/api/board/list?category=media"

 

curl POST 방식 호출

## 보기편하기위해서 줄바꾼거지.. 굳이 이럴필요없이 한줄로 쓰셔도 됩니다.
## 그리고 전달되는 -d 내용을 ""로 감싸면, "{\"id\":\"test\"}" 로하셔야합니다.
## '{"id":"test"}' 와는 다릅니다. 당연히 아시겠지만 혹시나하는 마음에 .. ^^

curl -X POST --digest -u "user:password" \
   -H "Accept: application/json" \
   -H "Content-Type: application/json" http://127.0.0.1:8080/api/board/write \
   -d '{ \
   "title": "test", \
   "content": "test_content" \
    }'

PUT/DELTE 등도 -X 옵션을 통해 처리가능합니다.

 

curl Digest 인증

-u --digest 인증도 아래 처럼 처리가능합니다.

curl -u "user:password" --digest "http://127.0.0.1:8080/api/login"

 

주로 사용하는 것 옵션들이 정해져있긴하지만, 생각보다 많은 옵션을 통해 다양한 프로토콜을 지원합니다.

조금이나마 작은 기억들이 같은 경험을 하는 이웃들에게 도움이 되었으면 합니다.

 

그리고 무엇보다!! 백문이 불여일견!! 해보지 않고 어렵다 겁먹는것보다 해보면 다른 즐거운 요소들도 많습니다.

오늘도 도전하는 하루속에 하나이상은 배움을 갖기를 .. (저부터... ㅎ)