Возврат определенного значения из программы REST API Server клиенту - PHP - PullRequest
1 голос
/ 26 февраля 2011

У меня есть приложение, которое выглядит так -

Узел A спрашивает узел B, существует ли файл на узле B или нет.Таким образом, A запрашивает вызов API REST для B. Теперь B должен отправить ответ (это может быть через коды состояния) к A, после проверки того, какой аргумент отправляется через URL от A до B.* Я новичок в концепции REST API.Мне ясно, как A отправляет запрос B, но может кто-нибудь сказать мне, как B возвращает значение A.

Спасибо

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Простите! Я сделал глупую ошибку, которая после исправления дала мне результат 200 - как и ожидалось.

Клиент 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 & # x3a; // localhost / Receiver1.php или как? Пожалуйста, уточните это.

0 голосов
/ 27 февраля 2011

В ответах REST нет ничего особенного. Это обычные HTTP-ответы. Служба REST может ответить страницей HTML, документом XML или JSPN или простым строковым значением. Любой способ действителен.

В вашем сценарии служба A является клиентом для службы B. A выдает запрос REST (скажем, HTTP GET), B принимает его и отвечает, помещая значение в тело ответа (вы выбираете формат), A потребляет тело ответа от B и делает с ним все, что ему нужно.

Это очень грубый пример:

A:

<?php
$response_from_b = file_get_contents('http://www.b.com/file/some-file-on-b.ext');
// do whatever you need with $response_from_b
?>

B:

<?php
$file_path = parse($_SERVER['REQUEST_URI']); // parse is your own function to get what you want form URI
$native_response = file_exists($file_path); // your own function
$response = decorate($native_response); // your own function
echo $response;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...