Ứng dụng phần mềm cURL, chính thức được biết đến với tên gọi "Client for URLs," cung cấp cho các nhà phát triển một bộ công cụ mạnh mẽ để quản lý việc truyền tải dữ liệu. Nó hoạt động trong hai chế độ khác nhau: một giao diện dòng lệnh thân thiện với người dùng phục vụ cho các tương tác cơ bản và một thư viện mạnh mẽ được thiết kế để tích hợp liền mạch vào các dự án lập trình.
Để hiểu rõ hơn về Apidog, hãy tự mình thử nghiệm bằng cách nhấp vào nút dưới đây!
Định nghĩa chính thức của curl_init()
Dựa trên trang web chính thức của PHP, hàm curl_init khởi tạo một phiên cURL và trả về một tay cầm cURL để sử dụng với các hàm curl_setopt(), curl_exec() và curl_close().
Các tham số liên quan
url
Nếu bạn cung cấp một URL, tùy chọn CURLOPT_URL
sẽ được thiết lập thành giá trị của nó. Bạn cũng có thể đặt tùy chọn này bằng tay sử dụng hàm curl_setopt().
Tuy nhiên, hãy lưu ý rằng giao thức file
bị cURL tự động vô hiệu hóa nếu open_basedir
đã được thiết lập.
Giá trị trả về
Hàm curl_init() trả về một tay cầm cURL khi thành công, và false
khi có lỗi.
PUT Request là gì?
PUT request trong Giao thức Chuyển giao Siêu văn bản (HTTP) hoạt động như một công cụ tinh vi để quản lý các tài nguyên trên máy chủ web. Nó khác với đối tác của nó, GET request (được sử dụng để lấy dữ liệu), bằng cách nhắm đến các sửa đổi ở phía máy chủ.
Chức năng của PUT Requests
Khác với đối tác của nó, GET request được sử dụng để lấy dữ liệu, PUT request tập trung vào việc sửa đổi thông tin ở phía máy chủ. Sự sửa đổi này có thể bao gồm hai hành động chính:
- Cập nhật tài nguyên hiện có: Nếu một tài nguyên (như tài khoản người dùng hoặc sản phẩm trong cơ sở dữ liệu) đã tồn tại tại một URL cụ thể, PUT request có thể được sử dụng để cập nhật dữ liệu liên quan của nó.
- Tạo tài nguyên mới: Trong các tình huống mà tài nguyên không tồn tại tại URL được chỉ định, PUT request có thể được sử dụng để tạo một tài nguyên mới với dữ liệu được cung cấp.
Đặt dữ liệu
Các PUT request thường truyền tải dữ liệu trong thân yêu cầu, tương tự như các POST request. Dữ liệu này thường đại diện cho trạng thái mới hoặc đã cập nhật của tài nguyên đang nhắm tới.
Tính idempotence
Một đặc điểm xác định của PUT request là tính chất idempotent của nó. Điều này có nghĩa là việc thực hiện một PUT request nhiều lần với cùng một dữ liệu sẽ tạo ra cùng một kết quả. Nói một cách đơn giản, việc gửi một PUT request một lần hoặc nhiều lần với cùng một dữ liệu đều dẫn đến cùng một kết quả trên máy chủ.
Các trường hợp sử dụng phổ biến của PUT Requests
- Cập nhật hồ sơ người dùng hoặc thông tin tài khoản
- Sửa đổi nội dung hiện có trong cơ sở dữ liệu (ví dụ: chỉnh sửa một bài viết trên blog)
- Tải lên một tệp mới đến một vị trí cụ thể trên máy chủ
Ví dụ mã về việc thực hiện PUT Requests với hàm curl_init()
Dưới đây là một số ví dụ mã PHP mà bạn có thể tham khảo nếu bạn muốn thực hiện PUT requests với hàm curl_init()
.
Ví dụ 1 - Cập nhật thông tin người dùng (Dữ liệu JSON)
Ví dụ này cập nhật thông tin hồ sơ của người dùng trên một máy chủ sử dụng dữ liệu JSON.
<?php
$url = "https://www.example.com/api/users/123"; // Thay thế bằng ID người dùng thực tế
$new_email = "new_email@example.com";
$data = array(
"email" => $new_email
);
$data_json = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); // Đặt phương thức yêu cầu là PUT
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json); // Đặt dữ liệu PUT dưới dạng JSON
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Trả về phản hồi
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json', // Đặt loại nội dung là JSON
'Authorization: Bearer YOUR_API_KEY' // Thêm tiêu đề xác thực
));
$response = curl_exec($ch);
curl_close($ch);
if($response) {
echo "Hồ sơ người dùng đã được cập nhật thành công!";
} else {
echo "Lỗi: " . curl_error($ch);
}
?>
Giải thích mã:
- Chúng tôi xác định URL mục tiêu (bao gồm ID người dùng) và địa chỉ email mới.
- Chúng tôi tạo một mảng
$data
chứa địa chỉ email đã cập nhật và chuyển đổi nó thành JSON bằngjson_encode
. - Chúng tôi khởi tạo tay cầm cURL và đặt phương thức yêu cầu thành PUT bằng
CURLOPT_CUSTOMREQUEST
. - Chúng tôi đặt dữ liệu PUT bằng
CURLOPT_POSTFIELDS
và thiết lập tiêu đề loại nội dung là JSON. - Chúng tôi thêm tiêu đề xác thực với khóa API của bạn để truy cập an toàn.
- Chúng tôi thực hiện yêu cầu, đóng tay cầm và kiểm tra phản hồi xem có thành công hay không.
Ví dụ 2 - Tải lên tệp (Dữ liệu thô)
Ví dụ này tải lên một tệp đến một máy chủ sử dụng dữ liệu thô.
<?php
$url = "https://www.example.com/api/uploads";
$filename = "myfile.txt";
$file_content = file_get_contents($filename); // Đọc nội dung tệp
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); // Đặt phương thức yêu cầu là PUT
curl_setopt($ch, CURLOPT_PUT, 1); // Đặt chế độ tải lên PUT
curl_setopt($ch, CURLOPT_INFILE, fopen($filename, "rb")); // Đặt tệp để tải lên
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filename)); // Đặt kích thước tệp
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Trả về phản hồi
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/octet-stream' // Đặt loại nội dung cho dữ liệu thô
));
$response = curl_exec($ch);
curl_close($ch);
if($response) {
echo "Tệp đã được tải lên thành công!";
} else {
echo "Lỗi: " . curl_error($ch);
}
?>
Giải thích mã:
- Chúng tôi xác định URL tải lên và tên tệp.
- Chúng tôi đọc nội dung tệp bằng
file_get_contents
. - Chúng tôi khởi tạo tay cầm cURL và đặt phương thức yêu cầu là PUT.
- Chúng tôi kích hoạt chế độ tải lên PUT với
CURLOPT_PUT
. - Chúng tôi chỉ định tệp để tải lên bằng
CURLOPT_INFILE
và kích thước của nó bằngCURLOPT_INFILESIZE
. - Chúng tôi đặt tiêu đề loại nội dung để chỉ ra dữ liệu thô.
- Chúng tôi thực hiện yêu cầu, đóng tay cầm và kiểm tra phản hồi xem có thành công hay không.
Ví dụ 3 - PUT có điều kiện với ETag
Ví dụ này minh họa một yêu cầu PUT có điều kiện sử dụng ETag cho khóa lạc quan.
<?php
$url = "https://www.example.com/api/posts/123";
$new_title = "Tiêu đề cập nhật";
$etag = "some-etag-value"; // Thay thế bằng ETag thực tế
$data = array(
"title" => $new_title
);
$data_json = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); // Đặt phương thức yêu cầu là PUT
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json); // Đặt dữ liệu PUT dưới dạng JSON
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Trả về phản hồi
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json', // Đặt loại nội dung là JSON
'If-Match: ' . $etag // Thêm ETag cho cập nhật có điều kiện
));
$response = curl_exec($ch);
curl_close($ch);
if($response) {
echo "Bài viết đã được cập nhật thành công!";
} else {
$error = curl_error($ch);
if (strpos($error, '412 Precondition Failed') !== false) {
echo "Cập nhật thất bại: Không trùng khớp ETag (dữ liệu có thể đã được sửa đổi bởi người dùng khác).";
} else {
echo "Lỗi: " . $error;
}
}
?>
Giải thích mã:
- Chúng tôi xác định URL mục tiêu (ID bài viết), tiêu đề mới và ETag được truy xuất từ máy chủ.
- Chúng tôi tạo một mảng
$data
và chuyển đổi nó thành JSON. - Chúng tôi đặt phương thức yêu cầu là PUT và bao gồm dữ liệu PUT.
- Chúng tôi thêm một tiêu đề
If-Match
với ETag để đảm bảo rằng cập nhật chỉ diễn ra nếu phiên bản bên máy chủ hiện tại trùng khớp với ETag. Điều này ngăn ngừa việc ghi đè các thay đổi được thực hiện bởi người dùng khác (khóa lạc quan). - Chúng tôi kiểm tra phản hồi để xác nhận thành công và xử lý một lỗi cụ thể (412 Precondition Failed) cho thấy không trùng khớp ETag.
Lưu ý để nhớ
Xin vui lòng đảm bảo rằng các mẫu mã ở trên không được sao chép và dán vào IDE của bạn, vì chúng đã được đơn giản hóa và sẽ yêu cầu các sửa đổi thêm để phù hợp với nhu cầu ứng dụng của bạn.
Để xem tài liệu chính thức, bạn có thể kiểm tra tại: https://www.php.net/manual/en/book.curl.php

Thúc đẩy phát triển API cURL của bạn với Apidog
Apidog là một nền tảng phát triển API tinh vi có khả năng chuyển đổi các dòng lệnh cURL thành các hiển thị đồ họa đẹp mắt và trực quan, giúp cho các nhà phát triển dễ dàng hiểu và làm việc với các API.

Không chỉ có thể nhập các lệnh cURL, mà bạn còn có thể xây dựng, gỡ lỗi, giả lập và tài liệu hóa chúng giống như bất kỳ API nào khác! Với sự tiện lợi như vậy, Apidog có thể hỗ trợ bạn với một quy trình làm việc không bị gián đoạn.
Nhập các API cURL trong vòng vài giây

Apidog hỗ trợ người dùng muốn nhập các lệnh cURL vào Apidog. Trong một dự án trống, nhấp vào nút tím +
ở khu vực góc trên bên trái của cửa sổ Apidog, và chọn Nhập cURL
.

Sao chép và dán lệnh cURL vào ô hiển thị trên màn hình của bạn.

Nếu thành công, bây giờ bạn sẽ có thể xem lệnh cURL dưới dạng yêu cầu API.
Không chắc chắn về PHP? Tạo mã với Apidog
Nếu bạn không có kinh nghiệm lập trình trước đây bằng ngôn ngữ lập trình PHP, đừng lo! Apidog có tính năng tạo mã mà bạn có thể dựa vào, cung cấp cho bạn các khung mã cho nhiều ngôn ngữ lập trình khác.

Đầu tiên, hãy xác định nút </> Tạo mã
trên bất kỳ API hoặc yêu cầu nào và chọn Tạo mã khách hàng
trong danh sách thả xuống.

Tiếp theo, chọn PHP, và tìm phần cURL. Bạn sẽ thấy mã được sinh ra cho cURL. Tất cả những gì bạn cần làm là sao chép và dán nó vào IDE (Môi trường phát triển tích hợp) của bạn và tiếp tục phát triển ứng dụng của bạn.
Kết luận
Bằng cách nắm vững các PUT request với curl_init()
, bạn đã mở khóa một công cụ mạnh mẽ cho việc tương tác với các máy chủ web. Hàm này cho phép bạn không chỉ cập nhật các tài nguyên hiện có mà còn tạo ra những tài nguyên mới. Dù bạn đang quản lý hồ sơ người dùng, sửa đổi các mục cơ sở dữ liệu hay tải lên các tệp, các PUT request cung cấp một phương pháp chính xác và hiệu quả cho việc thao tác dữ liệu.
Hãy nhớ rằng, curl_init()
cung cấp một cách tiếp cận linh hoạt, cho phép bạn chỉ định các định dạng dữ liệu, thiết lập tiêu đề tùy chỉnh để giao tiếp an toàn và thậm chí xử lý các kịch bản như cập nhật có điều kiện và báo cáo tiến độ cho các chuyển nhượng tệp lớn. Với kiến thức mới mẻ này, bạn có thể tự tin tận dụng các PUT request để nâng cao chức năng và hiệu năng của các ứng dụng web của bạn.