[英]RESTful Service API
幾周以來,我一直在使用RESTful Service API,但是我開始遇到使用/API/login
調用我的API的問題,它告訴我<p>The requested URL /API/login was not found on this server.</p>
請參閱我用來測試Chrome的Advanced Rest Client Extension的屏幕截圖。
現在可以通過在代碼內部創建一個.htaccess文件來解決此問題:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
完成此操作后,出現下一個問題,我不再使用授權,因為它被忽略了。
如您所見,服務器在Apache服務器上運行,所以應該不成問題,對嗎?
現在,我的想法是,使用.htacces文件並不是真正理想的選擇,我寧願僅使用標頭中的授權來調用url,如果發送方被授權,則返回json對象。
我是朝着正確的方向前進,還是我完全錯了?
編輯:情況草圖
應該可以從任何知道授權密鑰和令牌的應用程序或網站上調用此API,以識別誰在跟我說話,例如,我是一家擁有多個辦公室的超市老板,有人想知道那里有多少個辦公室他會問我。
http://jeanpaulvanhouten.nl/API/getOffices
我會告訴他;
{"office":{"address":"nowhere street 123","country":"holland","employees":0}}
甚至多個辦公室。
但是問問者無需對url做任何事情,它只會向url提出問題,並會得到json響應,然后對話就完成了。
編輯:授權部分
在我的index.php(每個用戶調用我的API時都會通過的主頁)中,我進行了標頭檢查:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: Authorization, token, Content-Type');
// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
然后,我告訴服務器允許哪些頭,我檢查它們是否真的設置好了:
// Simpel authorisation
$headers = apache_request_headers();
if (isset($headers['Authorization']) == true) {
$api_key = $headers['Authorization'];
$token = $headers['token'];
if ($api_key == 'test' && $token == '123') {
$app->run();
} else {
$app->status('401');
echo json_encode('No Access');
}
}
我會嘗試這種方法,並使用專門為SLIM構建的Auth庫,該庫過去曾用過: http : //www.appelsiini.net/projects/slim-basic-auth
這比嘗試創建自己的要好。
很好的是,它不需要數據庫,並為您處理所有授權。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.