2013-09-28 4 views
5

私のフロントエンドコードから呼び出されるデータ/ apiがあるPHPの安らかなAPI中心のWebアプリケーション/ Webサイトを作成したいと思います。ページを読み込むたびにHTTP/curlリクエストを呼び出すだけでなく、Slimのようなフレームワークを使って内部API呼び出しを行うにはどうすればよいですか?httpリクエストではなく、PHPで安心なapi-centricデザインinternalを使用する方法

私のフロントエンドコードに内部使用のための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とフロントコードは同じクラウドボックス(Amazon E2/LAMP)にあり、apiのmemcachedを使用する予定です。

+0

あなたが探しているのは、ajaxのuriを使ってAPIを呼び出す方法と、 'example.com/api/story/todays-weather'のようにカールする方法です。 同じものにアクセスしたいフロントエンドをレンダリングするPHPコードの別の部分から? – Mohit

+0

あなたはそれをすることができない理由は何も見ません。外部使用のためにAPIを開くときに、1つのコードセットのみを管理できます。スケーリングモデルを熟考して、驚きに惑わされないようにしてください。 –

答えて

0

APIとフロントエンドの間にコードを分けることはできません。 Slim Frameworkを使用すると、簡単に保守可能なコードを作成できます。スリムフレームワークは、モデルの作成が非常に簡単で、将来の使用のためにデータを準備し、キャッシュすることさえできます。 http://davss.com/tech/php-rest-api-frameworks/

あなたはまた、別のアプローチを取ると、コードの分離の両方を行うために、フロントエンドのモデルを使用して、素敵なコード構造を持つことができます:

はまた、PHP RESTfulなAPIフレームワークのこのリストを見てみましょう。そのためには、Backbone.jsをお勧めします。これは、フロントエンドコードのための素晴らしいキー値バインディングとイベント処理を提供します。

0

MVCパターンを使用すると、1つのモデルに2つの異なるビューを書き込むことができます。 あなたがここに似た何かをやっているように見える:

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

あなたはフロントエンドとAPIが、重要な部分間の分離を持っているその方法は、コードの重複を減らす、同じです。

私に正しい方向を見てください。

0

私は別のPHPページをフィードするPHPウェブサービスを持っていますが、基本的にユーザーはオンラインでボタンを押すことができ、必要に応じてウェブサービスが何度も呼び出されてメンテナンスしやすくなります今すぐ私のために良い、ここではコードの一部です。

ウェブサービスがjsonまたはxmlを返しました。ウェブ上でこの記事を見つけ、ニーズに合わせて変更しました。

ここで私はjqueryを使用して私のPHPページからこのことを呼び出す方法です。

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

あなたは任意のユーザー入力にこの関数を呼び出すと、Webサービスによって提供された結果でリフレッシュし、うまくいけば、これはあなたが行く保つのを助けることができます。

関連する問題