Contact Info

Chicago 12, Melborne City, USA

+88 01682648101

[email protected]

Get Started
  1. Home
  2. Knowledge Base
  3. Software
  4. Cách tạo yêu cầu POST với curl

Cách tạo yêu cầu POST với curl

curl là một công cụ dòng lệnh được sử dụng để truyền dữ liệu từ hoặc đến một máy chủ từ xa bằng cách sử dụng một trong các giao thức được hỗ trợ. Nó được cài đặt mặc định trên Windows, macOS và hầu hết các bản phân phối Linux.

Các quản trị hệ thống, nhà phát triển và người dùng khác thường sử dụng curl để kiểm tra các API, xem tiêu đề phản hồi và thực hiện các yêu cầu HTTP.

Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng curl để thực hiện các yêu cầu POST.

Tùy chọn cURL

Phương thức POST HTTP được sử dụng để gửi dữ liệu đến máy chủ từ xa.

Hình thức chung của lệnh curl để thực hiện yêu cầu POST có dạng sau:

curl -X POST [tùy chọn] [URL]

Tùy chọn -X xác định phương thức yêu cầu HTTP sẽ được sử dụng khi giao tiếp với máy chủ từ xa. Trong hầu hết các trường hợp, bạn không cần phải thiết lập phương thức vì nó được xác định từ các tùy chọn dòng lệnh.

Thực hiện yêu cầu POST

Yêu cầu POST thông thường được gửi thông qua một biểu mẫu HTML và dữ liệu gửi đến biểu mẫu thường được mã hóa theo định dạng ứng dụng/x-www-form-urlencoded. Các khóa và giá trị dữ liệu được mã hóa thành các cặp khóa-giá trị, cách nhau bởi ký hiệu & và có dấu = giữa khóa và giá trị.

Để gửi yêu cầu POST với curl, sử dụng tùy chọn -d (–data) để chỉ định dữ liệu:

curl -d 'name=linuxize&[email protected]' https://example.com/form/

Trong ví dụ trên, chúng ta đang gửi dữ liệu đến máy chủ từ xa gồm hai cặp khóa-giá trị: “name=linuxize” và “[email protected]”.

Bạn cũng có thể gửi dữ liệu bằng cách sử dụng nhiều tùy chọn -d. Ví dụ, lệnh trên cũng có thể được viết như sau:

curl -d 'name=linuxize' -d '[email protected]' https://example.com/form/

Khi gửi dữ liệu đến curl bằng tùy chọn -d, bạn luôn nên mã hóa đúng URL tất cả các ký tự không phải là chữ số hoặc chữ cái trong cả khóa và giá trị. Ví dụ, nếu bạn đang gửi dữ liệu chứa tên có khoảng trắng (“John Doe”), lệnh sẽ trông như sau:

curl -d 'name=John%20Doe' https://example.com/form/

Tuy nhiên, việc mã hóa thủ công dữ liệu chưa được mã hóa trước đó có thể hơi bất tiện. Trong trường hợp này, tốt hơn là sử dụng tùy chọn –data-urlencode để yêu cầu curl mã hóa dữ liệu đã cung cấp. Lệnh trên, khi sử dụng tùy chọn –data-urlencode, sẽ trông như sau:

curl --data-urlencode 'name=John Doe' https://example.com/form/

Dữ liệu truyền vào lệnh curl thường ở định dạng key=value. Khi bạn sử dụng tùy chọn –data-urlencode, chỉ giá trị mới được mã hóa. curl mong đợi rằng khóa đã được mã hóa URL trước đó.

Nếu bạn đang gửi dữ liệu chứa một số lượng lớn các cặp khóa-giá trị, thay vì gõ dữ liệu trên dòng lệnh, bạn có thể lưu nó vào một tệp và truyền tệp đó cho curl:

curl -d @name_of_the_file https://example.com/form/

Khi dữ liệu được cung cấp cho lệnh bắt đầu bằng ký hiệu @, curl coi dữ liệu đó là một tệp trên hệ thống cục bộ và sẽ đọc và sử dụng dữ liệu từ tệp đó.

Thực hiện yêu cầu POST bằng cách sử dụng Multipart Form Data
Kiểu nội dung multipart/form-data được sử dụng khi dữ liệu biểu mẫu chứa các tệp nhị phân hoặc dữ liệu có kích thước lớn khác.

Để tạo một yêu cầu POST multipart, gọi lệnh curl với một hoặc nhiều tùy chọn -F (–form), tiếp theo là các cặp khóa=giá trị. Khi sử dụng tùy chọn -F, curl gửi dữ liệu bằng cách sử dụng kiểu nội dung multipart/form-data.

Ví dụ sau đây thể hiện cách thực hiện yêu cầu POST đến một biểu mẫu có các trường “name” và “image”:

curl -F 'name=linuxize' -F '[email protected]' https://example.com/form/

Tải lên các tệp

Để POST một tệp với curl, thêm ký hiệu @ trước vị trí tệp. Tệp có thể là một tệp lưu trữ, hình ảnh, tài liệu, v.v.

curl -F 'image=@/home/user/Pictures/wallpaper.jpg' http://example.com/upload/

POST dữ liệu JSON với cURL

JSON là một định dạng dữ liệu dựa trên văn bản được sử dụng để truyền dữ liệu giữa các dịch vụ web và API.

Bạn có thể gửi dữ liệu JSON bằng cách sử dụng POST với curl bằng cách sử dụng tùy chọn –json.

Dưới đây là một ví dụ cơ bản về cách gửi một đối tượng JSON đến một máy chủ:

curl --json '{"website": "linuxize.com"}' http://example.com/api/

curl gửi dữ liệu JSON như nó vậy, vì vậy hãy đảm bảo rằng nó ở định dạng JSON hợp lệ.

Tương tự như với yêu cầu POST thông thường, bạn có thể sử dụng nhiều tùy chọn –json trong một lệnh:

curl --json '{"name": "Jonn"}' --json '{"age": "36"}' http://example.com/api/

Dữ liệu JSON cũng có thể được đọc từ một tệp cục bộ:

curl --json @json_data.txt http://example.com/api/

Nếu bạn đang sử dụng curl trong một tập lệnh, bạn có thể chuyển dữ liệu JSON từ một lệnh khác vào curl, như được hiển thị bên dưới:

echo '{"website": "linuxize.com"}' | curl --json @- http://example.com/api/

Phần @- có nghĩa là đọc nội dung từ đầu vào tiêu chuẩn.

Kết luận

Chúng tôi đã hướng dẫn bạn cách sử dụng curl để thực hiện các yêu cầu POST. Để biết thêm thông tin về curl, hãy truy cập trang tài liệu Curl.

Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, đừng ngần ngại để lại bình luận.

Was this article helpful?

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *