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)
-
- curl 에 비해 사용이 쉬움
- json 지원 기능 내장
- 출력을 포맷팅하여 보여주므로 가독성이 뛰어남
- Form 과 file 업로드가 쉬움
- 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
'이론 > DevOps' 카테고리의 다른 글
[AWS] API Gateway (2) | 2021.11.15 |
---|---|
[AWS] CloudWatch Log Insights Query (0) | 2021.11.14 |
[AWS] SSH란? / SSH key / chmod (0) | 2021.10.30 |
[AWS] SSH 키 등록 및 EC2 접속 방법 (0) | 2021.10.05 |
[DevOps] WSL 소개 , 사용 설정 Ubuntu 20.04 LTS 설치 / WSL2 사용 설정 / Windows Terminal 설치 (0) | 2021.10.05 |