Anda perlu tahu apakah REST API yang Anda panggil mendukung GET
atau POST
, atau kedua metode tersebut. Kode di bawah ini adalah sesuatu yang berfungsi untuk saya, saya memanggil API layanan web saya sendiri, jadi saya sudah tahu apa yang API ambil dan apa yang akan kembali. Ini mendukung keduanya GET
dan POST
metode, sehingga info yang kurang sensitif masuk ke URL (GET)
, dan info seperti nama pengguna dan kata sandi dikirimkan sebagai POST
variabel. Juga, semuanya berjalan melalui HTTPS
koneksi.
Di dalam kode API, saya menyandikan larik yang ingin saya kembalikan ke format json, kemudian cukup gunakan perintah PHP echo $my_json_variable
untuk membuat string json itu tersedia untuk klien.
Jadi seperti yang Anda lihat, API saya mengembalikan data json, tetapi Anda perlu tahu (atau melihat data yang dikembalikan untuk mengetahui) apa format respons dari API.
Inilah cara saya terhubung ke API dari sisi klien:
$processed = FALSE;
$ERROR_MESSAGE = '';
// ************* Call API:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://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, saya juga mencoba menggunakan file_get_contents()
metode seperti yang disarankan beberapa pengguna di sini, tapi itu tidak berfungsi dengan baik untuk saya. Saya menemukan curl
metode menjadi lebih cepat dan lebih dapat diandalkan.