Theo mặc định, bạn sử dụng curl mà không nói rõ ràng phương thức yêu cầu nào sẽ sử dụng. Nếu bạn chỉ chuyển vào một URL HTTP giống như curl http://example.com
nó sẽ sử dụng GET. Nếu bạn sử dụng -d
hoặc -F
cuộn tròn sẽ sử dụng POST, -I
sẽ gây ra HEAD và -T
sẽ làm cho nó trở thành PUT.
Nếu vì lý do nào đó mà bạn không hài lòng với những lựa chọn mặc định mà curl mang lại cho bạn này, bạn có thể ghi đè các phương thức yêu cầu đó bằng cách chỉ định -X [WHATEVER]
. Bằng cách này, bạn có thể ví dụ như gửi một XÓA bằng cách thực hiện curl -X DELETE [URL]
.
Do đó, nó là vô nghĩa nếu curl -X GET [URL]
GET sẽ được sử dụng. Theo cách tương tự, điều đó là vô nghĩa curl -X POST -d data [URL]...
nhưng bạn có thể thực hiện một yêu cầu thú vị và hơi hiếm khi gửi một request-body trong một yêu cầu GET với một cái gì đó như curl -X GET -d data [URL]
.
Đào sâu hơn
curl -GET
(sử dụng một dấu gạch ngang) chỉ là sai cho mục đích này. Điều đó tương đương với việc chỉ định -G
, -E
và -T
các tùy chọn và điều đó sẽ làm một cái gì đó hoàn toàn khác.
Ngoài ra còn có một tùy chọn cuộn tóc được gọi --get
để không nhầm lẫn các vấn đề với cả hai. Đây là dạng dài của -G, được sử dụng để chuyển đổi dữ liệu được chỉ định với -d
thành yêu cầu GET thay vì POST.
(Sau đó, tôi đã sử dụng câu trả lời của riêng mình ở đây để điền Câu hỏi thường gặp về curl để giải quyết vấn đề này .)
Cảnh báo
Các phiên bản hiện đại của curl sẽ thông báo cho người dùng về việc sử dụng -X không cần thiết và có khả năng gây hại này khi chế độ tiết được bật ( -v
) - để người dùng biết. Giải thích thêm và động lực trong bài đăng blog này .
-G chuyển đổi nội dung POST + thành truy vấn GET +
Bạn có thể yêu cầu curl chuyển đổi một tập hợp các -d
tùy chọn và thay vì gửi chúng trong phần nội dung yêu cầu với POST, hãy đặt chúng vào cuối chuỗi truy vấn của URL và đưa ra GET, với việc sử dụng `-G. Như thế này:
curl -d name=daniel -d grumpy=yes -G https://example.com/