Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

cURL로 POST 요청하기

cURL 원격 서버 간에 데이터를 전송하기 위한 다양한 도구가 포함된 패키지입니다. FTP, Windows 공유, 메일 서버 및 HTTP를 사용하는 웹 서버를 지원합니다.

Linux 셸에서 파일 다운로드는 일반적으로 cURL을 사용하여 수행됩니다. 다음과 같은 명령:

curl https://example.org/file.zip --output file.zip

이렇게 하면 GET 메서드를 사용하여 파일을 요청하고 간단히 다운로드할 수 있습니다.

이 문서에서는 cURL을 사용하여 양식 데이터를 포함하여 POST 요청을 만드는 방법을 자세히 설명합니다. 이는 서버에서 파일을 다운로드하기 위해 자격 증명이 필요한 경우 또는 데이터베이스에 저장하기 위해 웹 양식에 데이터를 제출하는 자동화된 스크립트를 작성하는 경우에 유용할 수 있습니다.

또한 REST API와 함께 사용하기 위해 파일에서 XML 또는 JSON 데이터를 제출하는 방법도 다룹니다.

cURL을 사용하여 URL 인코딩된 필드 게시

예를 들어 다음 양식 데이터를 제출합니다.

필드 이름
필드1 값1
필드2 값2

데이터는 URL https://example.org/submit.php로 제출됩니다. . example.org의 주소 실제로 존재하지 않으며 예제로 안전하게 사용할 수 있는 웹 도메인일 뿐입니다. submit.php 또한 양식 제출 스크립트의 예시 이름이며 특정 항목을 참조하지 않습니다.

양식 데이터는 각 양식 필드와 해당 값이 name=value로 정의된 단일 문자열로 POST 요청에 전달할 수 있습니다. , &으로 구분 –data 사용 옵션:

curl --data "field1=value1&field2=value2" https://example.org/submit.php

그러나 URL 인코딩이 필요하므로 이상적이지 않습니다. 데이터 – 즉, 공백과 슬래시가 있는 데이터는 HTTP를 통해 보낼 수 있도록 형식을 지정하는 특수 코드로 대체되었습니다. 이 작업은 수동으로 수행할 수 있지만 cURL은 –data-urlencode를 사용하여 대신 수행할 수 있습니다. :

curl --data-urlencode "field1=value1&field2=value2" https://example.org/submit.php

필드 이름은 URL로 인코딩되지 않습니다. 인코딩하려는 경우 접두사로 =을 붙입니다. :

curl --data-urlencode "=user name=Linus Torvalds" https://example.org

–data-urlencode를 사용합니다. –data 대신 다음 예의 경우 일을 쉽게 하기 위해 POST 요청을 하기 위해.

별도로 지정된 URL 인코딩 필드

각 양식 필드 이름/값을 개별적으로 전달할 수 있습니다. 이를 통해 훨씬 더 쉽게 읽을 수 있습니다.

curl --data-urlencode "field1=value1" --data-urlencode "field2=value2" https://example.org/submit.php

cURL을 사용한 멀티파트/파일 업로드

파일을 포함한 여러 부분으로 구성된 양식 요청은 –form을 사용하여 POST를 통해 제출할 수 있습니다. 옵션. 아래 예는 myfile.txt를 fileupload 양식 필드에 업로드합니다.

curl --form "[email protected]" https://example.org/submit.php

필드와 파일, 파일 이름이 있는 멀티파트

양식 필드 이름과 값 쌍은 파일 업로드 및 파일 이름에 포함될 수도 있습니다. 변경하려는 경우 업로드된 파일의 경우:

curl --form "[email protected];filename=newfilename.txt" --form field1=value1 --form field2=value2 https://example.org/submit.php

데이터 없음

데이터 없이 POST 요청을 하려면 빈 문자열을 전달하기만 하면 됩니다.

curl --data-urlencode '' https://example.org/submit.php

파일 업로드 진행률 표시

업로드 진행 상황을 주시하려면 -o 출력을 추가하세요. 진행률 표시줄을 표시하는 옵션:

curl --tr-encoding -X POST -v -# -o output -T myfile.dat https://example.org/submit.php

파일에 저장된 데이터 제출

파일에 이미 저장된 데이터를 업로드하는 경우 cURL 명령으로 구문 분석하지 않고 한 번에 모두 제출할 수 있습니다.

curl --data-urlencode [email protected] https://example.org/submit.php

적절한 헤더를 추가하여 프로그래밍 방식 API 서비스에 대해 JSON 및 XML 데이터를 게시할 수 있습니다.

curl -X POST --data-urlencode @myfile.txt https://example.org/submit.php --header "Content-Type:text/xml"

curl -X POST --data-urlencode @myfile.txt https://example.org/submit.php --header "Content-Type:application/json"

결론

Linux 명령줄에서 자주 작업하는 경우 cURL을 마스터하는 것이 중요합니다. 프로그래밍 방식 API와 상호 작용하고 자체 서버에서 데이터를 전송하는 용도 외에도 일반적으로 전체 웹 브라우저가 필요할 수 있는 많은 작업을 수행할 수 있습니다.

여기에서 다른 Linux 셸 및 스크립팅 기사를 확인하십시오!