본문 바로가기

DevOps

[DevOps] Curl / Curl 명령어

CURL 이란?

  • URL 기반으로 데이터를 웹(서버)로 전송하기 위한 명령줄 유틸리티다.
  • 별도의 view나 툴없이 직접 서버에 http request을 날리고 response를 확인할 수 있다.
  • curl 을 사용하면 HTTP, HTTPS, SCP, SFTP 및 FTP 등 다양한 프로토콜과 Proxy, Header, Cookie 등 세부 옵션까지 쉽게 설정할 수 있다.
  • 서버 API test 도구 중 postman 과 같은 역할을 할 수 있다. 

 

CURL 설치

  • 현재 대부분의 리눅스 배포 환경에는 curl 패키지가 미리 설치되어 있다.
  • 시스템에 curl 패키지가 설치되어 있는지 확인하려면 콘솔을 열고 curl 을 입력하면 된다. curl이 설치된 경우 시스템에서 컬을 인쇄한다. "자세한 내용을 보려면 'curl —help' 또는 'curl —manual' 을 사용하면된다" 는 출력을 볼 수 있다.
  • curl 이 없다면 curl을 설치하면된다.
  • "sudo apt install curl"
  • +) httpie : curl 을 대체할 http 클라이언트 유틸리티다. 

httpie (click)

    1. curl 에 비해 사용이 쉬움
    2. json 지원 기능 내장
    3. 출력을 포맷팅하여 보여주므로 가독성이 뛰어남
    4. Form 과 file 업로드가 쉬움
    5. HTTP 인증 및 커스텀 헤더 설정등

CURL 사용법

  • curl 명령의 구문은 다음과 같다.
  • curl [option] [URL]
  • 가장 간단한 형태는 'curl example.com'이다
  • 프로토콜을 지정하지 않은 경우, curl은 사용할 프로토콜을 추측하려고 시도하며, 이 프로토콜은 HTTP로 기본 설정된다.
-X : http method 를 get/post로 할건지 지정 지정없으면 디폴트는 get
-H : http 헤더값
-d : http body값 or 함께 전달할 파라미터 값
-G : 전송할 사이트 url 및 ip 주소
-I : 사이트의 Header 정보만 가져오기
-i : 사이트의 Header와 바디 정보를 함께 가져오기
-u : 사용자 정보

 

📍요청시 자세한 정보 표시

curl -v [URL]

 

📍post 요청 보내기

curl -X POST [URL]

 

📍data 같이보내기 

curl -X POST —data "name=john&age=10" [URL]

 

📍form 보내기

curl  -d name="John Grib"  -d hobby="coding" [URL]

 

📍 json 보내기 curl -d '{"name":"john"}'  -H "Content-Type: application/json" [URL]

 

📍출력을 파일에 저장

  • curl 명령의 결과를 저장하려면 -o 또는 -O 옵션을 사용한다.
  • 소문자 -o : 미리 정의된 파일 이름을 사용하여 파일을 저장한다.
  • curl -o [저장할 파일 이름] https://[접근할 URL]
  • 대문자 -O : 파일을 원래 파일 이름으로 저장한다.
  • curl -O htttps://[접근할 URL]

 

 curl의 실제 사용 

1. Local - post 
$ curl -X POST localhost:3000/apis/search?v=0.3.0 -H "Content-Type: application/json" -d '{"searchId": "test999991", "restaurantMenus": ["test1","test2","test3","test4"]}'

2. Local - get
$ curl -G  localhost:3000/apis/search? -H 'Content-type:application/json' -d 'v=0.3.0' -d 'f=finder' -d 'searchId=test999991’ -v

3. Server - post 
$ curl -X POST https://naver.com/apis/search?v=0.3.0 -H "Content-Type: application/json" -d '{"searchId": "test6161990", "restaurantMenus": ["test1","test2","test3","test4"]}'

4. Server - get
$ curl -G  https://naver.com/apis/search? -H 'Content-type:application/json' -d 'v=0.3.0' -d 'f=finder' -d 'searchId=test6161990' -v