curl로 PUT 요청을 수행하는 방법은 무엇입니까?


412

curl을 사용하여 RESTful PUT (또는 DELETE) 방법을 어떻게 테스트합니까?

답변:


566

-X원하는 HTTP 동사와 함께 플래그 사용 :

curl -X PUT -d arg=val -d arg2=val2 localhost:8080

이 예제는 또한 -d플래그를 사용 하여 PUT 요청에 인수를 제공합니다.


17
-X의 "man curl": "일반적으로이 옵션은 필요하지 않습니다. 모든 종류의 GET, HEAD, POST 및 PUT 요청은 전용 명령 행 옵션을 사용하여 호출됩니다." 그러나 다른 방법을 찾지 못했습니다.
Martin C. Martin

44
1 년 후, 나는 길을 찾았습니다! curl -T
Martin C. Martin

2
Martin C. Martin의 답변이 서버에서 리디렉션 된 후 GET으로 변경되면 이것이 내 의견으로는 더 유용한 답변입니다.
Martin

2
GET후 리디렉션 을 달성하려면 다음 매개 변수를 추가하십시오.--location
Martin M

1
컬 7.47 그리고 이것은 나를 위해 작동하지 않습니다. theabraham의 답변은 항상 기본적으로 행동을 게시합니다. 그러나 --get (또는 -G)는 -d (-data) 필드가 강제로 URL 매개 변수가되어 작동합니다.
제임스 파월

101

빠른 답변 :

한 줄에서 curl 명령은 다음과 같습니다.

a) 양식 데이터를 보내는 경우 :

curl -X PUT -H "Content-Type: multipart/form-data;" -F "key1=val1" "YOUR_URI"

b) 원시 데이터를 json으로 보내는 경우 :

curl -X PUT -H "Content-Type: application/json" -d '{"key1":"value"}' "YOUR_URI"

c) POST 요청으로 파일을 보내는 경우 :

curl -X POST "YOUR_URI" -F 'file=@/file-path.csv'

대체 솔루션 :

Chrome 스토어에서 POSTMAN 앱을 사용하여 동등한 cURL 요청을받을 수 있습니다. 보다 복잡한 요청을 작성할 때 특히 유용합니다.

다른 형식으로 요청하거나 java, PHP와 같은 다른 클라이언트에 대한 요청은 아래 POSTMAN / 코멘트를 확인하십시오.

요청 코드를 얻는 POSTMAN


4
왜 이것이 다운 투표되었는지 모릅니다. 여기에서 curl PUT을 위해 JSON 본문을 전달하는 방법에 대한 아이디어를 복사했습니다. 또한 우편 배달부 더 복잡한 쿼리 컬 코드를 얻을 수있는 매우 멋진 도구입니다 :)
Mikael Lepistö

2
감사 !! 다운 보트에 대한 이유를 모르겠습니다. 사용자가 채택하기를 꺼려 할 수 있습니다. POSTMAN에서 모바일 용 모든 REST API의 respo를 만들었으며 REST를 사용하는 모든 사람에게 제안 할 수있는 최고의 생산성 팁입니다.
Prateek

끝점에서 json 데이터와 매개 변수를 전달하는 실제 예; curl -X PUT -H "콘텐츠 유형 : application / json"-d '{ "amount": "999", "type": "car", "parent_id": "12345"}' localhost : 8080 / transactionservice / 거래 / 2222
vikramvi

1
완전한 브라우저 (Chrome이없는 경우)와 확장 프로그램을 설치해야하는 경우 일부 사람들에게 과도한 영향을 줄 수 있습니다. 적어도 HttpRequester가 비슷한 작업을 수행하는 Firefox와 같은 더 일반적인 (기본 설치) 웹 브라우저에 대한 대안을 제공했을 수 있습니다.
rbaleksandar

5
컬에 대한 질문이기 때문에 다운 투표 될 수 있습니다.
tuxayo 2016 년

28

Martin C. Martin의 의견에 따른 PUT의 예 :

curl -T filename.txt http://www.example.com/dir/

-T(동일 --upload-file) 컬은 HTTP에 대한 PUT을 사용합니다.


8
불행히도 또는로 매개 변수를 지정하려는 경우를 -T대신 -X PUT할 수 없습니다 . PUT을 통해 파일 내용을 보냅니다. 후 리디렉션 을 달성하려면 다음 매개 변수를 추가하십시오.-d-F-TGET--location
Martin M

filename.txt가 원격 서버에 있으면 어떻게합니까?
bosari

7
curl -X PUT -d 'new_value' URL_PATH/key

어디,

X-요청 명령에 사용되는 옵션

d-원격 URL에 데이터를 넣는 데 사용되는 옵션

URL_PATH-원격 URL

new_value-서버 키에 넣을 값


5

이 스레드에 늦었지만 비슷한 요구 사항이 있습니다. 내 스크립트가 curl 요청을 동적으로 구성했기 때문에 GET, POST 및 PUT에서 비슷한 명령 구조를 원했습니다.

여기 나를 위해 일하는 것은

들어 PUT의 요청 :

curl --request PUT --url http://localhost:8080/put --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'

대한 POST의 요청 :

curl --request POST --url http://localhost:8080/post --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'

대한 GET의 요청 :

curl --request GET --url 'http://localhost:8080/get?foo=bar&foz=baz'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.