ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [HTTP 기본]curl
    프론트엔드/HTTP 2024. 12. 28. 18:59
    728x90

    [HTTP 기본]curl

     

     

    curl은 데이터를 서버와 주고받기 위한 명령줄 기반의 도구이자 라이브러리입니다. 다양한 프로토콜을 지원하며, 파일 다운로드, API 호출, 데이터 전송 등 네트워크와 관련된 작업을 간단히 수행할 수 있습니다. "Client URL"의 약자로, 주로 HTTP 요청을 테스트하거나 API와 상호작용하는 데 사용됩니다.


    주요 특징

    1. 다양한 프로토콜 지원:
      • HTTP, HTTPS, FTP, FTPS, SCP, SFTP, SMB, TFTP, TELNET, LDAP 등 다양한 네트워크 프로토콜을 지원합니다.
    2. 플랫폼 독립적:
      • Windows, macOS, Linux 등 대부분의 운영체제에서 사용 가능합니다.
    3. 라이브러리 지원:
      • libcurl이라는 C 기반 라이브러리를 제공하여, 애플리케이션 내에서 네트워크 통신 기능을 쉽게 구현할 수 있습니다.
    4. 보안:
      • HTTPS 및 FTPS와 같은 보안 프로토콜을 지원하며, SSL/TLS를 사용하여 데이터를 암호화할 수 있습니다.
    5. 확장성:
      • 다양한 옵션을 제공하여 요청 헤더, 인증, 데이터 전송 방식 등을 상세히 제어할 수 있습니다.

    사용 사례

    1. HTTP 요청 테스트:
      • REST API나 웹 서버의 응답을 테스트.
    2. 파일 다운로드 및 업로드:
      • FTP 서버에서 파일 다운로드/업로드.
    3. 인증 처리:
      • Basic, Digest, OAuth, Bearer Token 등을 활용한 인증 요청.
    4. 자동화 스크립트:
      • 명령줄을 통해 API 호출을 스크립트에 통합.
    5. 네트워크 디버깅:
      • HTTP 헤더나 응답 상태 코드를 확인하여 디버깅.

    기본 명령어 예제

    1. GET 요청

    curl http://example.com
    • 지정된 URL의 HTML 콘텐츠를 가져옵니다.

    2. POST 요청

    curl -X POST -d "name=John&age=30" http://example.com/api
    • POST 요청으로 데이터를 서버로 전송합니다.

    3. 헤더 추가

    curl -H "Authorization: Bearer TOKEN" http://example.com/api
    • 요청에 HTTP 헤더를 추가합니다.

    4. JSON 데이터 전송

    curl -X POST -H "Content-Type: application/json" -d '{"name":"John"}' http://example.com/api
    • JSON 형식의 데이터를 POST 요청으로 전송합니다.

    5. 파일 다운로드

    curl -O http://example.com/file.zip
    • URL에서 파일을 다운로드하여 로컬에 저장합니다.

    6. 파일 업로드

    curl -T file.txt ftp://example.com/
    • 로컬 파일을 FTP 서버에 업로드합니다.

    7. SSL 인증서 무시

    curl -k https://self-signed.badssl.com/
    • SSL 인증서 검사를 무시하고 요청을 보냅니다.

    8. HTTP 응답 헤더 확인

    curl -I http://example.com
    • URL의 HTTP 응답 헤더만 출력합니다.

    주요 옵션

    옵션 설명
    -X HTTP 메서드 지정 (GET, POST, PUT, DELETE 등)
    -H 요청 헤더 추가
    -d 요청 본문에 데이터를 추가
    -O URL의 파일을 로컬에 저장
    -T 로컬 파일을 서버에 업로드
    -I HTTP 응답 헤더만 출력
    -k SSL 인증서 검사를 무시
    -u 사용자 이름과 비밀번호를 사용한 인증 (e.g., -u username:password)
    -L 리다이렉트를 따라감

    고급 사용법

    1. 다중 URL 요청

    curl http://example.com http://another-example.com
    • 한 번에 여러 URL에 요청을 보냅니다.

    2. 병렬 요청

    curl http://example.com & curl http://another-example.com
    • 두 요청을 병렬로 실행합니다.

    3. API 요청 결과를 파일로 저장

    curl -o result.json http://example.com/api
    • API 응답을 파일에 저장합니다.

    4. 프록시 서버를 통한 요청

    curl -x http://proxy.example.com:8080 http://example.com
    • 프록시 서버를 경유하여 요청을 보냅니다.

    5. 응답 시간 측정

    curl -w "Time: %{time_total}\n" -o /dev/null -s http://example.com
    • 요청 응답에 걸린 시간을 출력합니다.

    curl과 wget의 차이점

    특성 curl wget
    주요 목적 데이터 전송 및 요청/응답 테스트 파일 다운로드에 특화
    지원 프로토콜 다양한 프로토콜 (HTTP, FTP, SCP 등) 주로 HTTP, FTP
    사용 방식 유연한 옵션 제공 간단한 파일 다운로드 위주
    인터랙션 헤더 및 데이터 전송, API 호출 가능 다운로드 후 별도 처리가 필요함

    장점

    • 다양한 프로토콜: 여러 프로토콜 지원으로 유연성 높음.
    • 강력한 옵션: 요청 헤더, 인증, 데이터 포맷 등 세부 제어 가능.
    • 스크립트와 통합 가능: 자동화 작업에 적합.

    단점

    • 복잡한 옵션: 초보자에게는 사용법이 다소 어려울 수 있음.
    • 주로 명령줄 기반: GUI 지원 도구에 익숙한 사용자에게는 불편.

    curl은 네트워크 작업, REST API 디버깅, 파일 전송 등의 작업에서 필수적인 도구로 널리 사용됩니다.

     

    https://curl.se/

     

    curl

    command line tool and library for transferring data with URLs (since 1998) What is curl used for? curl is used in command lines or scripts to transfer data. curl is also libcurl, used in cars, television sets, routers, printers, audio equipment, mobile pho

    curl.se

    https://inpa.tistory.com/entry/LINUX-%F0%9F%93%9A-CURL-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9A%A9%EB%B2%95-%EB%8B%A4%EC%96%91%ED%95%9C-%EC%98%88%EC%A0%9C%EB%A1%9C-%EC%A0%95%EB%A6%AC

     

    🐧 CURL 명령어 사용법 💯 완전 총정리

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

    inpa.tistory.com

     

    728x90

    '프론트엔드 > HTTP' 카테고리의 다른 글

    [HTTP 보안]CSP vs SOP  (0) 2024.12.29
    [HTTP 보안]escape  (0) 2024.12.29
    [HTTP 보안]sanitize  (0) 2024.12.29
    [HTTP 추가 프로토콜]WebSocket  (3) 2024.12.28
    [HTTP 추가 프로토콜]Server-Sent Events(SSE)  (0) 2024.12.28
Designed by Tistory.