2012-09-27 12 views
8

私は現在、Webサーバーに相談するモバイルクライアントとデスクトップクライアントに大いに依存しているWebアプリケーションを開発中です。これはRESTfulなAPIを利用してこれを処理できるようにうまく機能します。だから私の考えはカーテンの背後にあるすべての実際のビジネスロジックとデータベース情報を扱う "プラットフォーム"としてアプリケーションを動作させることです。Symfony2のウェブサイトとRESTful API

私の計画は、symfony2とOAuth 2.0の認証メカニズムと、RESTful Webサービスを組み合わせてプラットフォームを作ることです。

私の本当のジレンマは、ウェブサイトのコンポーネントになります。理想的には、このRESTプラットフォームに情報を求めて、プラットフォーム自体から完全に分離しているもう1つのクライアントとして、Webサイトを考えてみたいと思います。

もう少し明確にするために、このアーキテクチャのブログを作っているとしましょう。記事の一覧を表示するための休憩サービスを提供する「プラットフォーム/バックエンド」があります。例:/ articles/5 。これはバックエンドとsymfony2/doctrineを使って、アプリケーションにArticleモデルクラスがあり、これをDBから要求できることを意味します。シンプルコントローラーは商品番号5を照会し、すべての情報をJSON形式で返します。

この例のWebサイトでは、簡単なことだけでなく、記事エンティティを持ち、データベースに直接問い合わせることもできますが、REST APIを使用してプラットフォームと話すことができれば、その情報をエンティティの「バックエンド」として使用します。

symfony2を使ってこの種のデザインをサポートするのは本当に問題でしょうか?エンティティはCRUD操作のためにREST APIに依存していますか?あるいは、プラットフォーム/ウェブサイトを単一のものにして、すべての一般的なエンティティと "CoreBundle"を共有する方が良いでしょうか?

+0

あなたは、このための解決策を見つけたことがありますか?私は興味があるだろう。 – sprain

+0

実際に私はしました。私は、ウェブサイトを別のクライアントにして、HTTPリクエストを通じてプラットフォームからデータを要求することに行きました。私はリクエストを作成し、JSONレスポンスをエンティティに自動的に逆シリアル化するためにguzzle(symfony2用の自分のGuzzleBundleを使用)を使用しています。 Web側では、実際にはエンティティは重複していますが、教義マッピングはなく、場合によっては、フロントエンドに必要なデータよりもバックエンドの実際のビジネスエンティティ間で実際のデータが異なっていました。それはあなたに私のお尻のバンドルは、任意の使用の場合はhttps://github.com/xamado/guzzle-bundle – Xavier

+0

ありがとう!実際には、あなたのウェブサイト上のリクエストごとに2つのリクエストがありますか?これは私が避けたいものです。 – sprain

答えて

1

Symfonyには、あなたがしたいことができないものは何もありません。

クライアント側では、Backbone.jsまたはSpine.jsを使用できます。

+0

私はsymfony2プロジェクトであることをウェブサイト自体が意図していたことを忘れていました。symfony2のウェブサイトを扱う方法に関して、私の質問が出てきますRESTのAPIではなく、教えてください。 – Xavier