[Linux] - Curl 명령어

오동훈·2023년 1월 20일
1

잡것들

목록 보기
4/7

1. Curl 이란

curl(client url) 명령어는 프로토콜들을 이용해 URL로 데이터를 전송해 서버에 데이터를 보내거나 가져올 때 사용하기 위한 명령줄 도구 및 라이브러리입니다.

Postman과 같이 좋은 툴이 많아 사용할 일이 없을 거 같지만, 그런 좋은 툴이 지원되지 않는 환경이라면 알고 있어야 할 필수적인 명령어입니다.

1. Curl 설치

# ubuntu
sudo apt update
sudo apt install curl


# CentOS
sudo yum install curl

2. Curl 명령어 사용법

특정 URL을 대상으로 동작하며 URL 앞에 curl 옵션을 달아 사용해주면 됩니다.

보통 아래 볼딩 처리해놓은 부분들이 많이 쓰이는 명령입니다.

curl [options...] <url>
shortlong설명
-k--insecurehttps 프로토콜에서 SSL 인증서에 대한 검증없이 연결
-i--headHTTP 헤더만 보여주고 컨텐츠는 표시하지 않음
-D--dump-header HTTP 헤더를 file에 기록 (덤프)
-L--locationHTTP 301, 302 응답을 받은 경우 리디렉션 URL로 따라간다.
--max-redirs 옵션 뒤에 숫자로 몇 번의 리디렉션까지 따라갈 것인지를 적을 수 있다. 기본 값은 50이다.
-d--dataHTTP POST 요청 데이터 입력
-v--verbose동작하면서 세세한 내용을 출력
-J--remote-header-name헤더에 있는 파일 이름으로 다운로드 파일을 저장
-o--output FILEcurl로 받아온 내용을 FILE 이라는 이름의 파일로 저장
-O--remote-name파일 저장시 리모트에 저장되어 있던 이름을 그대로 가져와서 로컬에 저장
-s--silent진행 내용이나 메시지들을 출력하지 않음
HTTP response code 만 가져오거나 할 경우 유리
-X--request요청시 사용할 메소드의 종류 (GET, POST, PUT, PATCH, DELETE)
-i--include응답에 Content 만 출력하지 않고 서버의 Reponse 도 포함해서 출력한다. (디버깅에 유용)
-A--user-agent서버에 User-Agent 보내기
-u--user서버 사용자 및 비밀번호
-T--upload-file로컬 FILE 을 대상으로 전송
-f--failHTTP 오류 시 자동으로 실패 (출력 없음)
-G전송할 사이트 url 및 ip 주소
-H전송할 헤더를 지정
-J--remote-header-name어떤 웹서비스는 파일 다운로드시 Content-Disposition HeaderVisit Website 를 파싱해야 정확한 파일이름을 알 수 있을 경우가 있다.
-J 옵션을 주면 헤더에 있는 파일 이름으로 저장한다.
-v--verbose동작하면서 자세한 헤더 통신 옵션을 출력한다.
-C--continue-at파일 다운로드 재개

3. GET 요청

curl -X GET <IP주소>

4. POST 요청

  • POST의 기본 Content-Type 은 application/x-www-form-urlencoded 이다.
    JSON 파일을 같이 첨부해 보내고 싶으면 헤더를 "Content-Type: application/json"로 설정해주어야 합니다.
# url 형식 데이터 

curl -d '{"key1":"value1", "key2":"value2"}' -X POST <IP주소>/<url 라우팅 주소>
# json 형식 데이터 

curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" -X POST <IP주소>/<url 라우팅 주소>
# 파라미터값을 파일로 지정해서 보내기
 
curl -d "@data.txt" -X POST <IP주소>/<url 라우팅 주소>
 
curl -d "@data.json" -H "Content-Type: application/json" -X POST <IP주소>/<url 라우팅 주소>

4. PUT 요청

curl -X PUT -d 'name=mkyong&email=abc@gmail.com' <IP주소>/<url 라우팅 주소>
curl -X PUT -H "Content-Type: application/json" -d '{"name":"mkyong","email":"abc@gmail.com"}' <IP주소>/<url 라우팅 주소>
 
# 파일명으로 PUT
curl -T filename.txt http://www.example.com/dir/

5. DELETE 요청

curl -X DELETE http://localhost:8080/user/100

6. 요청/응답 진행 상황을 자세히 출력

curl -v www.example.com
profile
삽질의 기록들🐥

0개의 댓글