Bạn sẽ cần biết nếu API còn lại mà bạn đang gọi hỗ trợ GET
hoặc POST
hoặc cả hai phương thức. Mã dưới đây là một cái gì đó phù hợp với tôi, tôi đang gọi API dịch vụ web của riêng tôi, vì vậy tôi đã biết API lấy gì và nó sẽ quay lại gì. Nó hỗ trợ cả phương thức GET
và POST
, do đó thông tin ít nhạy cảm hơn vào
sudo apt-get install php5-curl
sudo service apache2 restart
2 và thông tin như tên người dùng và mật khẩu được gửi dưới dạng các biến POST
. Ngoài ra, mọi thứ đi qua kết nối sudo apt-get install php5-curl
sudo service apache2 restart
4.
Bên trong mã API, tôi mã hóa một mảng tôi muốn quay lại định dạng JSON, sau đó chỉ cần sử dụng lệnh PHP
sudo apt-get install php5-curl
sudo service apache2 restart
5 để làm cho chuỗi JSON đó có sẵn cho máy khách.Vì vậy, như bạn có thể thấy, API của tôi trả về dữ liệu JSON, nhưng bạn cần biết [hoặc xem dữ liệu được trả về để tìm hiểu] định dạng phản hồi từ API đang ở.
Đây là cách tôi kết nối với API từ phía máy khách:
$processed = FALSE;
$ERROR_MESSAGE = '';
// ************* Call API:
$ch = curl_init[];
curl_setopt[$ch, CURLOPT_URL, "//www.myapi.com/api.php?format=json&action=subscribe&email=" . $email_to_subscribe];
curl_setopt[$ch, CURLOPT_POST, 1];// set post data to true
curl_setopt[$ch, CURLOPT_POSTFIELDS,"username=myname&password=mypass"]; // post data
curl_setopt[$ch, CURLOPT_RETURNTRANSFER, true];
$json = curl_exec[$ch];
curl_close [$ch];
// returned json string will look like this: {"code":1,"data":"OK"}
// "code" may contain an error code and "data" may contain error string instead of "OK"
$obj = json_decode[$json];
if [$obj->{'code'} == '1']
{
$processed = TRUE;
}else{
$ERROR_MESSAGE = $obj->{'data'};
}
...
if [!$processed && $ERROR_MESSAGE != ''] {
echo $ERROR_MESSAGE;
}
BTW, tôi cũng đã cố gắng sử dụng phương pháp
sudo apt-get install php5-curl
sudo service apache2 restart
6 như một số người dùng ở đây đã đề xuất, nhưng điều đó không hoạt động tốt với tôi. Tôi phát hiện ra phương pháp sudo apt-get install php5-curl
sudo service apache2 restart
7 là nhanh hơn và đáng tin cậy hơn. Sử dụng Curl để gọi API
Chúng ta đều biết về Curl. PHP có một thư viện cho Curl. Chúng ta cần cài đặt nó trước khi chúng ta 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.
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;
}
Gửi yêu cầu bài đăng được mã hóa URL
$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 yêu cầu POST PHP
Khi gửi yêu cầu dưới dạng dữ liệu JSON, tiêu đề
sudo apt-get install php5-curl
sudo service apache2 restart
8 cần được đặt là sudo apt-get install php5-curl
sudo service apache2 restart
9. Lưu trữ dữ liệu trong một mảng PHP và sử dụng hàm 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;
}
0 để chuyển đổi nó thành chuỗi JSON để được truyền trong 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
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;
}
1. Ví dụ dưới đây cho thấy cách sử dụng JSON được trả về trong phản hồi.Kết xuất phía máy chủ với JSON trong PHP
Vì vậy, một khi chúng tôi gọi API REST của chúng tôi, 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 được cung cấp cho chúng tôi một đối tượng JSP, điều này sẽ giúp kết xuất phía máy chủ. Nếu cuộc gọi API REST này được thực hiện từ trình duyệt, để cập nhật một Div với các giá trị JSON, chúng tôi sẽ yêu cầu thao tác DOM.
Sau khi DOM được hiển thị ở phía máy khách, chúng tôi được yêu cầu 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 cho 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 thể xử lý. Chúng tôi có thể thực hiện JSON mà chúng tôi đã truy xuất bằng cách sử dụng cuộc gọi REST của chúng tôi trong PHP cho JavaScript. Trong quá trình tải trang ban đầu, JSON này sẽ được thông qua trong DOM. Kết xuất phía máy khách nhanh hơn vì nó có thể tránh cuộc gọi HTTP để tìm nạp JSON.
var covidJsonResponse = ;
Tải trọng nặng hơn luôn tốt hơn nhiều cuộc gọi HTTP