![](/img/trans.png)
[英]Calling a google apps script execution api from PHP using a service account
[英]Calling remote PHP script from a PHP script on an API service
我正在設計一個PHP API,我給我的用戶一個php文件(core.php)添加到他們的服務器上。 然后使用它們只需要include_once('api / core.php')。 在core.php里面我需要創建一些只從我的主服務器解析json文件的函數。
讓我們說他們需要一個完整的用戶列表,所以他們必須做類似的事情:
include_once('api/core.php');
print_r(myApi_list('user','all'));
在core.php里面,函數將是這樣的:
function myApi_list($pa, $pb) {
if($pa == 'user') {
//here will be a code that call my server
return resp;
}
//more stuf
}
當然,我的服務器上還會有另一個腳本來處理sql查詢和安全性。 我的問題是,如果我使用file_get_contents,從core.php調用我的服務器的最佳方法是什么? 並告訴我的服務器腳本回答可能是一個json文件(然后core.php解析那個)? 或者我應該使用cUrl? 由於這是一個API,我更喜歡在php服務器上使用更可能默認處於活動狀態的模塊。
您認為在這種情況下最好的方法是什么?
如果你回來的只是JSON,請使用file_get_contents()
。 它更容易,編碼時間更短。 只需將主服務器上腳本的標題設置為header('Content-type: text/json');
,然后使用file_get_contents()
並解析該響應。
如果響應為空,則存在無效的api請求(或者該查詢沒有數據,可以通過返回“未找到數據”來捕獲)。 如果響應的解析為null
,則服務器上存在錯誤。
我的推薦是cURL。
函數file_get_contents的使用本身非常有限。 它只能返回數據或false。
另一方面,cURL有很多選擇。 所以你可以制作干凈錯誤消息出錯,404 api停業,500服務器停機等。此外cURL有選擇使用POST值,file_get_contents沒有。
另外file_get_contents有allow_url_foppen的限制(可以禁用用於外部地址的函數),請參閱此問題 (這也建議使用cURL over file get contents
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.