Câu trả lời:
Sử dụng -X
cờ với bất kỳ động từ HTTP nào bạn muốn:
curl -X PUT -d arg=val -d arg2=val2 localhost:8080
Ví dụ này cũng sử dụng -d
cờ để cung cấp các đối số với yêu cầu PUT của bạn.
GET
sau khi chuyển hướng, hãy thêm tham số--location
Trong một dòng duy nhất, lệnh curl sẽ là:
a) Nếu gửi dữ liệu biểu mẫu:
curl -X PUT -H "Content-Type: multipart/form-data;" -F "key1=val1" "YOUR_URI"
b) Nếu gửi dữ liệu thô dưới dạng json:
curl -X PUT -H "Content-Type: application/json" -d '{"key1":"value"}' "YOUR_URI"
c) Nếu gửi tệp có yêu cầu POST:
curl -X POST "YOUR_URI" -F 'file=@/file-path.csv'
Bạn có thể sử dụng ứng dụng POSTMAN từ Cửa hàng Chrome để nhận yêu cầu tương đương. Điều này đặc biệt hữu ích khi viết các yêu cầu phức tạp hơn.
Đối với yêu cầu với các định dạng khác hoặc cho các máy khách khác nhau như java, PHP, bạn có thể kiểm tra POSTMAN / bình luận bên dưới.
Một ví dụ PUT sau bình luận của Martin C. Martin:
curl -T filename.txt http://www.example.com/dir/
Với -T
(giống như --upload-file
) curl sẽ sử dụng PUT cho HTTP.
-T
không có gì thay thế -X PUT
nếu bạn muốn chỉ định tham số bằng -d
hoặc -F
. -T
gửi nội dung của tệp qua PUT. Để đạt được GET
sau khi chuyển hướng, hãy thêm tham số--location
curl -X PUT -d 'new_value' URL_PATH/key
Ở đâu,
X - tùy chọn được sử dụng cho lệnh yêu cầu
d - tùy chọn được sử dụng để đưa dữ liệu vào url từ xa
URL_PATH - url từ xa
new_value - giá trị mà chúng tôi muốn đặt vào khóa của máy chủ
Tôi đến trễ chủ đề này, nhưng tôi cũng có một yêu cầu tương tự. Vì tập lệnh của tôi đang xây dựng yêu cầu cuộn tròn một cách linh hoạt, tôi muốn có một cấu trúc tương tự của lệnh trên GET, POST và PUT.
Đây là những gì làm việc cho tôi
Đối với yêu cầu PUT :
curl --request PUT --url http://localhost:8080/put --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'
Đối với yêu cầu POST :
curl --request POST --url http://localhost:8080/post --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'
Đối với yêu cầu NHẬN :
curl --request GET --url 'http://localhost:8080/get?foo=bar&foz=baz'