REST сервисы с использованием PHP - PullRequest
1 голос
/ 28 февраля 2011

У меня есть приложение, в котором клиент A отправляет запрос REST на сервер B с именем файла в качестве аргумента в URL, и сервер B должен ответить печатью, если файл существует на его диске или нет.

Client A
//Construct the REST call /$url = 'http://localhost/Receiver1.php?file=' . $filename;
//GET request with 'curl'
$ch = curl_init($url);
//Set Curl options
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_HEADER, true );

//Make the request
$response = curl_exec($ch);

//Get the status codes
$result = curl_getinfo($ch,CURLINFO_HTTP_CODE);
echo $result;

//Close the curl session
curl_close($ch);

switch($result)
{
    case 200 : 
        return true;
        break;
    case 303 :
        //my code
        break;
}

Сервер B Теперь на стороне сервера скрипт Receiver1.php выполняется, беря аргумент (имя файла) из URL и печатает, существует ли он в B или нет.В этом случае сервер мой локальный.Как он получает аргументы?

$filename = $_GET[file];

//Check if the file exists in the system 
if(file_exists($filename.'.mpeg')) { $result = true; } else { $result = intval(false); }
    echo $result;

Но на моем локальном хосте, что я должен запустить?Должен ли я проверить с http://localhost/Receiver1.php или как?Пожалуйста, уточните это.

1 Ответ

0 голосов
/ 03 марта 2011

Сервер может проанализировать строку запроса клиента, чтобы разбить ресурс. Хитрость заключается в том, чтобы перенаправить все URL-адреса для обработки одним PHP-скриптом. Типичной ситуацией может быть создание файла .htaccess для перенаправления всех URL-адресов. Я украл этот .htaccess из Recess Framework в качестве примера.

.htaccess:

Options FollowSymLinks
RewriteEngine On
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ bootstrap.php [QSA,L]

Поместите этот файл в ваш веб-каталог. Если у вас правильно настроен mod_rewrite (при необходимости обратитесь к Google за инструкциями), все веб-запросы будут перенаправлены в файл bootstrap.php. Теперь в вашем файле bootstrap.php поместите следующий код:

echo "Processing: " . $_SERVER['REQUEST_URI']."<br>";
$resources = explode('/',$_SERVER['REQUEST_URI']);
var_dump($resources);
/**
 * $resource now contains the pieces of the client's requested URL.
 * If we know what resource the client wants, we pass the parameter
 * on to that resource's handler.
 */
if( $resources[1] == 'files' ) {
    echo handleFiles($resources[2]);
} else {
    echo "Unknown resource!<br>";
}

function handleFiles($name) {
    if(file_exists($filename.'.mpeg')) {
        $result = true; 
    } else { 
        $result = intval(false); 
    }
    return $result;
}

То, что мы здесь делаем, разбивает URL на части. Например, клиент может захотеть получить доступ к http://localhost/files/mySoundFile. Мы разбиваем URL на части, «файлы» и «mySoundFile». Мы можем посмотреть на части, чтобы определить, как обработать запрос.

Это очень краткий пример того, как разбить URL в PHP. Я настоятельно рекомендую использовать фреймворк (например, http://www.recessframework.com или Zend's REST). Также найдите REST php в Google, чтобы получить несколько хороших указателей (http://rest.elkstein.org/2008/02/using-rest-in-php.html). Удачи!.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...