С тех пор как я работаю над API RESTful Service, но У меня возникли проблемы с вызовом моего API с помощью /API/login
, он сказал мне, что <p>The requested URL /API/login was not found on this server.</p>
См. Скриншот, который я сделал из расширенного клиентского расширения клиента Chrome, который Я тестировал его.RESTful Service API
Теперь эта проблема может быть решена путем создания файла .htaccess с внутренней этого кода:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
После этого следующая проблема возникла, что я не мог использовать разрешение больше , потому что он игнорируется.
Как вы можете видеть, сервер работает на сервере Apache, поэтому это не должно быть проблемой, не так ли?
Теперь мои мысли состоят в том, что использование файла .htacces на самом деле не идеальное, я бы скорее просто вызвал URL-адрес с авторизацией в заголовке и возвратил объект json, если санкционирован.
Я двигаюсь в правильном направлении, или я совершенно не прав?
EDIT: Ситуация Эскиз
Этот API должен быть в состоянии быть вызван из любого приложения или веб-сайт, который знает ключ авторизации и маркер, чтобы определить, кто говорит со мной, например, я владелец супермаркета с несколько офисов, и кто-то хочет знать, сколько и каких офисов он будет спрашивать.
http://jeanpaulvanhouten.nl/API/getOffices
и я бы сказал ему;
{"office":{"address":"nowhere street 123","country":"holland","employees":0}}
или даже несколько офисов.
Но ассеру не нужно ничего делать с URL-адресом, он просто задал бы вопрос на URL-адрес и получил бы ответ json, после чего разговор был сделан.
Edit: Authorization часть
в моем 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');
}
}
Вы двигаетесь в правильном направлении, отправив auth в заголовке от клиента к серверу. Вы просто используете .htaccess для хороших URL-адресов? – Rob
я использую.htacces, потому что я прочитал, что это исправит, позвольте мне изменить свой вопрос с эскизом ситуации. –
Используете ли вы среду MVC? – dgig