2011-12-20 12 views
3

私は、ビューをレンダリングするために、モバイルネイティブアプリケーション用のJSON-RPC APIを介して取得可能なデータを使用するZend Webアプリケーションを設計しようとしています。私は、これらの2つの部分を独立に保つためにプロジェクトをどのように構築するのかと思っていました。Zend WebアプリケーションとZend JSON-RPCサーバーの両方で同じ「バックエンド」コードを使用する方法は?

http://www.domainname.comその後、iOSとAndroidのクライアントが

にPOSTリクエストを送信することにより、JSON-RPC APIを使用することができるはずです:Webアプリケーションは、次のURLに行くことによって起動されることを意図していますhttp://www.domainname.com/api/

Webアプリケーションとapiは2つの別々のzendアプリケーションかどうかを確認しますか?彼らが管理するデータが実質的に同じであるため、リクエストハンドラクラスとwebappのコントローラには、返されるデータを取得して操作するための同様のコードが用意されているため、私はこれに懐疑的です。

JSON-RPCサーバーとWebアプリケーションの両方に同じ「バックエンド」コードを使用する、きれいで柔軟な方法がありますか?

私はコードの重複を避けたいですが、できるだけ早くapi呼び出しを行います。

助けてくれる誰にも感謝します!

答えて

1

実際にこれを簡単に実行できます。

コントローラがそれを処理し、使用...

if ($this->_request->isXmlHttpRequest()) 
{ 
    // Code here 
} 

あなたがデータを保存している場合は、手順は同じであってもよいです。通常は、それを使用してビューまたはJSONを返します。たとえば...

// Save the data here 

if ($this->_request->isXmlHttpRequest()) 
{ 
    die(Zend_Json::encode(array('success' => true))); 
} 
else 
{ 
    // View specific data here 
} 

私は助けて意味をなさないことを望みます。

+0

ありがとうございます。私はまだZendに100%満足しているわけではないので、フォルダ構造についての提案も求めていました。ウェブアプリケーションとAPIを1つのプロジェクトに保ちたいが、2つの異なるURLを使用してそれらにアクセスする場合はどうすればよいですか? (元の質問を参照してください)私が見たすべてのチュートリアルでは、Zendアプリケーションはweb_rootフォルダのindex.phpでしかアクセスできないと仮定しています。 –

+0

申し訳ありませんが、その部分を逃した! おそらく、これを達成するプラグインを作ることができますか? Zend Framework MVC Controllerディスパッチプロセスをチェックしてください。おそらく、URLをチェックしてそれに応じて処理するものを書くことができます。 別の方法として、別々のモジュールを2つ作ることもできますか? Webアプリケーションに必要なすべてのコードを「api」という別個のフォルダに入れます。 利用可能な方法はたくさんあります。 Zend Controllerのドキュメントをチェックしてください。 – Oomta

関連する問題