PHP không được tích hợp sẵn với ứng dụng khách API. Chúng ta phải cài đặt tiện ích mở rộng php-curl. PHP có một thư viện cho curl. Chúng ta cần cài đặt nó trước khi có thể sử dụng nó trong PHP
sudo apt-get install php5-curl
sudo service apache2 restart
Sau khi cài đặt khởi động lại máy chủ apache để curl có hiệu lực
Gọi API REST dựa trên JSON trong PHP
Ví dụ dưới đây là một yêu cầu GET đơn giản trả về phản hồi json. Phản hồi json có thể được phân tích cú pháp thành một đối tượng bằng cách sử dụng
$url = '//api.example.com/v1.0/details/customer';
$ch = curl_init[$url];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
$response = json_decode[$response];
curl_close[$ch];
2 để chương trình sử dụng thêm$url = '//api.example.com/v1.0/details/customer';
$ch = curl_init[$url];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
$response = json_decode[$response];
curl_close[$ch];
Tùy chọn
$url = '//api.example.com/v1.0/details/customer';
$ch = curl_init[$url];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
$response = json_decode[$response];
curl_close[$ch];
3 được đặt thành $url = '//api.example.com/v1.0/details/customer';
$ch = curl_init[$url];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
$response = json_decode[$response];
curl_close[$ch];
4 để trả lại chuyển khoản dưới dạng một chuỗi giá trị trả về của curl_exec[] thay vì xuất trực tiếpTrước khi chúng tôi chuyển sang yêu cầu POST, hãy xem cách chúng tôi có thể lặp qua đối tượng phản hồi và thực hiện kết xuất phía máy chủ
$blogList = json_decode[$response];
curl_close[$ch];
foreach [$blogList->pages as $blog] {
echo[''.$blog->title.''];
}
POST yêu cầu trong PHP
Yêu cầu POST khác với yêu cầu GET. Trong yêu cầu POST, có phần thân nên chúng tôi cần gửi dữ liệu bằng cách sử dụng
$url = '//api.example.com/v1.0/details/customer';
$ch = curl_init[$url];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
$response = json_decode[$response];
curl_close[$ch];
5. Trong ví dụ bên dưới, chúng tôi đang gửi yêu cầu POST bằng cách sử dụng tùy chọn $url = '//api.example.com/v1.0/details/customer';
$ch = curl_init[$url];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
$response = json_decode[$response];
curl_close[$ch];
6________số 8_______Đặt tiêu đề bằng CURLOPT_HTTPHEADER
Nếu bạn không đặt tiêu đề, chỉ cần thêm dòng dưới đây
curl_setopt[$ch, CURLOPT_HEADER, 0];
Nhưng nếu bạn muốn thêm tiêu đề, hãy đặt chúng vào một mảng và sử dụng tùy chọn CURLOPT_HEADER
curl_setopt[$ch, CURLOPT_HTTPHEADER, array[
'Authorization: apikey '.$authToken,
'Content-Type: application/json'
]];
Hàm tiện ích gọi API trong PHP
Bây giờ chúng ta tạo một hàm chung có thể gửi bất kỳ phương thức nào GET, POST, PUT, v.v. yêu cầu trong PHP. Điều này hữu ích trong trường hợp chúng tôi gọi API thường xuyên trong mã của mình. Có một chức năng tiện ích giúp chúng tôi tiết kiệm các dòng mã, chúng tôi cũng có thể cải thiện chức năng này ở một nơi duy nhất
function rest_call[$method, $url, $data = false, $contentType= false, $token = false]
{
$curl = curl_init[];
if[$token]{ //Add Bearer Token header in the request
curl_setopt[$curl, CURLOPT_HTTPHEADER, array[
'Authorization: '.$token
]];
}
switch [$method]
{
case "POST":
curl_setopt[$curl, CURLOPT_POST, 1];
if [$data]{
if[$contentType]{
curl_setopt[$curl, CURLOPT_HTTPHEADER, array[
'Content-Type: '.$contentType
]];
}
curl_setopt[$curl, CURLOPT_POSTFIELDS, $data];
}
break;
case "PUT":
curl_setopt[$curl, CURLOPT_PUT, 1];
break;
default:
if [$data]
$url = sprintf["%s?%s", $url, http_build_query[$data]];
}
curl_setopt[$curl, CURLOPT_URL, $url];
curl_setopt[$curl, CURLOPT_RETURNTRANSFER, 1];
$result = curl_exec[$curl];
curl_close[$curl];
return $result;
}
Đang gửi URL được mã hóa MẪU POST Yêu cầu
$postData = array["name"=>"John Doe", "from"=>"New York"];
$string = http_build_query[$postData];
$url = '//api.example.com/v1.0/user';
$jsonResponse = rest_call["POST",$url, $string, 'application/x-www-form-urlencoded'];
$response = json_decode[$jsonResponse];
Gửi JSON trong PHP POST Yêu cầu
Khi gửi yêu cầu dưới dạng dữ liệu JSON, tiêu đề
$url = '//api.example.com/v1.0/details/customer';
$ch = curl_init[$url];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
$response = json_decode[$response];
curl_close[$ch];
7 cần được đặt thành $url = '//api.example.com/v1.0/details/customer';
$ch = curl_init[$url];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
$response = json_decode[$response];
curl_close[$ch];
8. Lưu trữ dữ liệu trong một mảng PHP và sử dụng hàm $url = '//api.example.com/v1.0/details/customer';
$ch = curl_init[$url];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
$response = json_decode[$response];
curl_close[$ch];
9 để chuyển đổi dữ liệu đó thành Chuỗi JSON để chuyển vào phần thân yêu cầu
$postData = array["name"=>"John Doe", "from"=>"New York"];
$jsonData = json_encode[$postData];
// Send the request
$url = '//api.example.com/v1.0/user';
$jsonResponse = rest_call['POST',$url, $jsonData,'appplication/json'];
//Decode JSON back to PHP object
$response = json_decode[$jsonResponse];
JSON được trả về trong phản hồi được chuyển đổi trở lại đối tượng PHP, sử dụng
$url = '//api.example.com/v1.0/details/customer';
$ch = curl_init[$url];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
$response = json_decode[$response];
curl_close[$ch];
2. Ví dụ dưới đây cho thấy cách sử dụng JSON được trả về trong phản hồiKết xuất phía máy chủ với JSON trong PHP
Vì vậy, khi chúng tôi gọi API REST của mình, chúng tôi muốn sử dụng JSON ở phía máy chủ để hiển thị HTML
$covidJsonResponse = rest_call["GET","//api.metamug.com/covid/v1.0/india"];
$covidIndiaObject = json_decode[$covidJsonResponse];
$lastCovidUpdateInfo = end[$covidIndiaObject->historical_count];
Như bạn có thể thấy phương thức json_decode cung cấp cho chúng ta một đối tượng PHP, điều này sẽ giúp hiển thị phía máy chủ. Nếu lệnh gọi API REST này được thực hiện từ trình duyệt, chúng tôi sẽ yêu cầu thao tác dom để cập nhật div với các giá trị JSON
$url = '//api.example.com/v1.0/details/customer';
$ch = curl_init[$url];
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$response = curl_exec[$ch];
$response = json_decode[$response];
curl_close[$ch];
0Sau khi DOM được hiển thị ở phía máy khách, chúng tôi bắt buộc phải thay đổi bằng javascript. Trong trường hợp này, chúng ta có thể dễ dàng truy cập đối tượng json và các thuộc tính của nó mà không cần thao tác DOM
Chuyển JSON sang Javascript từ PHP
Có những trường hợp chúng tôi muốn gửi JSON này xuống trình duyệt như biểu đồ và cho người dùng thư viện js mà php không xử lý được. Chúng tôi có thể tạo JSON mà chúng tôi đã truy xuất bằng cách sử dụng lệnh gọi REST trong PHP thành javascript. Trong lần tải trang đầu tiên, JSON này sẽ được chuyển vào DOM. Kết xuất phía máy khách nhanh hơn vì nó có thể tránh lệnh gọi HTTP để tìm nạp JSON