OS/Linux

Curl (Client URL) 명령어

beomzh 2023. 8. 24. 10:56
728x90
반응형

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

SHELL(커맨드라인 환경)에서 REST API(http) 테스트 하고 싶으면 curl 명령어를 이용

 

 

Curl 설치

 

# ubuntu

$ sudo apt update
$ sudo apt install curl

 

# CentOS

$sudo yum install curl

 

 

Curl 명령어 Option

 

short long 설명
-k --insecure https 프로토콜에서 SSL 인증서에 대한 검증없이 연결
-i --head HTTP 헤더만 보여주고 컨텐츠는 표시하지 않음
-D --dump-header HTTP 헤더를 file에 기록 (덤프)
-L --location HTTP 301, 302 응답을 받은 경우 리디렉션 URL로 따라간다.
--max-redirs 옵션 뒤에 숫자로 몇 번의 리디렉션까지 따라갈 것인지를 적을 수 있다. 기본 값은 50이다.
-d --data HTTP POST 요청 데이터 입력
-v --verbose 동작하면서 세세한 내용을 출력
-J --remote-header-name 헤더에 있는 파일 이름으로 다운로드 파일을 저장
-o --output FILE curl로 받아온 내용을 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 --fail HTTP 오류 시 자동으로 실패 (출력 없음)
-G
전송할 사이트 url 및 ip 주소
-H
전송할 헤더를 지정
-J --remote-header-name 어떤 웹서비스는 파일 다운로드시 Content-Disposition HeaderVisit Website 를 파싱해야 정확한 파일이름을 알 수 있을 경우가 있다.
-J 옵션을 주면 헤더에 있는 파일 이름으로 저장한다.
-v --verbose 동작하면서 자세한 헤더 통신 옵션을 출력한다.
-C --continue-at 파일 다운로드 재개

 

GET 요청

  • $ curl-X GET <IP주소>

 

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 라우팅 주소>

 

PUT 요청

  • $ curl-X PUT -d 'name=kim&email=abc@gmail.com'<IP주소>/<url 라우팅 주소>
  • $ curl-X PUT -H "Content-Type: application/json"-d '{"name":"kim","email":"abc@gmail.com"}'<IP주소>/<url 라우팅 주소>

 

# 파일명으로 PUT

 

DELETE 요청

 

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

728x90
반응형

'OS > Linux' 카테고리의 다른 글

journalctl 명령어 사용  (0) 2024.03.13
linux 한글깨짐시(encoding)  (0) 2023.10.10
groups - 사용자 그룹  (0) 2023.08.16
명령어 - MV (rm 대신 덮어쓰기..)  (0) 2023.07.25
원격 시스템 관리를 위한 Telnet 서버설치  (0) 2023.07.25