Как использовать php restful api-centric design internal вместо HTTP-запроса

Я хочу создать php resty api-centric веб-приложение / веб-сайт, где у меня есть data / api, который вызывается из моего кода переднего конца. Помимо того, что каждый раз, когда я загружаю страницу, вы вызываете запросы HTTP / curl-запроса, что я могу сделать для внутренних вызовов API с использованием таких фреймворков, как slim?

Я не уверен в том, чтобы включить api для внутреннего использования в свой код переднего конца и по-прежнему держать его в стороне.

Мои мысли были примерно такими:

"example.com/api/story/todays-weather/" pulls in the json formatted story with a http request with curl or Ajax 

Но вместо этого я мог бы сделать что-то вроде:

 require("/api/internal.php"); $uri = "/story/todays-weather/"; $call = api::getStory($uri); $result = json_decode($call); ..... 

Я направляюсь в правильном направлении или уезжаю?

Код api и front находятся в одном облачном ящике (Amazon E2 / LAMP), и я планирую использовать memcached для api.

Итак, вы хотите иметь разделение кода между вашим API и интерфейсом? Вы можете использовать Slim Framework для этого, чтобы у вас был удобный код для обслуживания. Slim Framework очень легко писать модели, а также готовить данные для будущего использования и даже кэшировать их.

Также ознакомьтесь с этим списком PHP RESTful API Framework: http://davss.com/tech/php-rest-api-frameworks/

Вы также можете использовать другой подход и использовать интерфейсные модели для разделения кода и хорошей структуры кода. Для этого я рекомендую Backbone.js, который обеспечит некоторые хорошие привязки ключевых значений и обработку событий для вашего интерфейсного кода.

Используйте шаблон MVC в нашу пользу, напишите одну модель с двумя разными видами. Похоже, вы делаете что-то похожее здесь:

 require("/api/internal.php"); $uri = "/story/todays-weather/"; $call = api::getStory($uri); $result = json_decode($call); 

Таким образом, у вас есть разделение между Frontend и API, но важная часть такая же, что уменьшает дублирование кода.

Посмотрите в правильном направлении.

У меня есть веб-служба PHP, которая передает другую php-страницу, в основном пользователь может нажать кнопку онлайн, и вызванный веб-сервис имеет много раз по мере необходимости, что упрощает его поддержку, не уверен, что это то, что вам нужно, но оно отлично работает для меня правильно теперь, вот часть кода.

Мой webservice возвращает json или xml, я нашел этот фрагмент в Интернете и изменил его в соответствии со своими потребностями.

 <?php case 'whateveryourwebserviceaction': $params = array("test"); $tsql = "select * from test where test=?"; /*Execute the query with a scrollable cursor so we can determine the number of rows returned.*/ $cursorType = array("Scrollable" => SQLSRV_CURSOR_KEYSET); $getProducts = sqlsrv_query($conn, $tsql, $params, $cursorType); if ( $getProducts === false) die( FormatErrors( sqlsrv_errors() ) ); $posts = array(); while( $post = sqlsrv_fetch_array( $getProducts, SQLSRV_FETCH_ASSOC)) { $posts[]=array('post'=>$post); } break; } if($format == 'json') { header('Content-type: application/json'); echo json_encode(array('posts'=>$posts)); } else { header('Content-type: text/xml'); echo '<posts>'; foreach($posts as $index => $post) { if(is_array($post)) { foreach($post as $key => $value) { echo '<',$key,'>'; if(is_array($value)) { foreach($value as $tag => $val) { echo '<',$tag,'>',htmlentities($val),'</',$tag,'>'; } } echo '</',$key,'>'; } } } echo '</posts>'; } ?> 

И вот как я вызываю эту вещь с моей php-страницы, используя jquery.

 $.ajax({ type: "GET", url: "htto:\\server.com?action=whateveryourwebserviceaction&format=json", dataType: "xml", success: parseXml, error: function (xml) { alert(xml.status + ' ' + xml.statusText); }}); 

вы можете вызвать эту функцию на любом входе пользователя и обновить с помощью результатов, предоставляемых веб-сервисом, надеюсь, это поможет вам продолжать работу.