Linux

[리눅스] curl 명령어 완벽 가이드 사용법(데이터 전송)

인생아 2024. 10. 8. 16:40
반응형

curl은 리눅스 환경에서 HTTP, HTTPS, FTP 등 다양한 프로토콜을 통해 데이터를 전송하거나 서버에서 데이터를 가져오는 데 사용하는 명령어입니다. 주로 API 요청을 테스트하거나, 원격 서버에서 파일을 다운로드하는 데 사용됩니다. curl은 명령줄에서 간편하게 사용할 수 있으며, 매우 강력한 옵션들을 지원해 다양한 네트워크 작업에 활용됩니다.

curl 명령어의 기본 사용법

curl [옵션] [URL]

가장 기본적인 형태는 URL에서 데이터를 가져오는 것입니다. 다운로드된 데이터는 기본적으로 표준 출력(stdout)으로 출력됩니다.

curl 사용 예시

1. 기본 GET 요청

user@linux:~/projects$ curl http://example.com
<!doctype html>
<html>
<head>
    <title>Example Domain</title>
</head>
<body>
    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples in documents.</p>
</body>
</html>

위 예제에서 curlhttp://example.com에 GET 요청을 보내고, 해당 URL에서 가져온 HTML 데이터를 출력합니다.

2. 파일 다운로드

user@linux:~/downloads$ curl -O http://example.com/file.zip

-O 옵션을 사용하면 URL에서 가져온 파일을 원본 이름 그대로 저장할 수 있습니다. 위 명령어는 file.zip을 현재 디렉토리에 다운로드합니다.

3. POST 요청 보내기

user@linux:~/projects$ curl -X POST -d "name=user&age=25" http://example.com/api/users
{
  "success": true,
  "message": "User created successfully"
}

-X POST 옵션을 사용하면 POST 요청을 보낼 수 있으며, -d 옵션을 통해 데이터를 전송할 수 있습니다. 위 명령어는 nameage 데이터를 POST 방식으로 전송합니다.

4. 헤더 정보 확인하기

user@linux:~/projects$ curl -I http://example.com
HTTP/1.1 200 OK
Date: Sat, 05 Oct 2024 10:00:00 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive

-I 옵션을 사용하면 서버로부터 받은 헤더 정보만을 출력할 수 있습니다. 이는 웹 서버가 어떻게 응답하는지 확인할 때 유용합니다.

5. JSON 데이터 전송

user@linux:~/projects$ curl -X POST -H "Content-Type: application/json" -d '{"name": "user", "age": 25}' http://example.com/api/users
{
  "success": true,
  "message": "User created successfully"
}

-H 옵션을 사용하여 Content-Typeapplication/json으로 설정하고, -d 옵션을 통해 JSON 데이터를 서버에 전송할 수 있습니다. 이는 API 개발 및 테스트 시 자주 사용하는 방식입니다.

6. 파일 업로드

user@linux:~/projects$ curl -F "file=@/path/to/file.txt" http://example.com/upload
{
  "success": true,
  "message": "File uploaded successfully"
}

-F 옵션을 사용하면 multipart/form-data 형식으로 파일을 업로드할 수 있습니다. 위 명령어는 file.txt 파일을 example.com에 업로드합니다.

curl 명령어의 주요 옵션

  • -O: URL에서 파일을 다운로드하여 파일로 저장
  • -I: 서버로부터 받은 헤더 정보만 출력
  • -X [메소드]: HTTP 메소드를 지정 (예: GET, POST, PUT, DELETE)
  • -d [데이터]: POST 요청으로 전송할 데이터 지정
  • -F [필드]: 파일 업로드를 위한 필드 지정
  • -H: 헤더 정보를 추가

참고사이트

반응형