2012-12-02 12 views
17

Symfony 2のReSTクライアントのベストプラクティスパターンを確立しようとしています。これは私の会社では非常に一般的な仕事であり、フロントエンドのSymfonyアプリケーションはJavaベースHTTP/ReST経由のバックエンド。Symfony2 ReSTクライアント構造

私の考えはこれです。これらのサービスは、問題の特定のドメインのDDDの「リポジトリ」役割を満たしています。 Doctrineで指定された規約に基づいて、これらはEntityオブジェクトを返すリポジトリクラスに入ります。

ReSTクライアントは、GuzzleやまっすぐなCurlのようなライブラリを使ってRepositoryクラスを実装していますが、方法は関係ありませんし、XMLやJSONの基本的な変換は上流の開発者が操作できるようにEntityオブジェクトに戻ります。これは他のSymfony 2ユースケースのパターンと一致しており、DDDの観点からは意味があります。

誰にでもこれを行う方法やそれを行うにはより良い方法がありますか?

答えて

1

私はあなたが概説したアプローチが好きです。あなたのリポジトリはanti-corruption layerと考えることができます。これはドメインモデルからあなたのReSTクライアントコードを隔離します。

1

これは、リポジトリが取得するRESTオブジェクトのTTLを超えてキャッシュされないようにするために、すべてのキャッシュレイヤーを正しく考慮した場合に機能します(etagsまたはexpireヘッダーまたはRESTサーバーが使用するもの)。

確実にリポジトリが正しいレイヤーですが、Symfonyでは、レベルを上げてエンティティマネージャと見なしたいと思っていますが、そのレベルでの操作を抽象化、削除、フラッシュすることができます。

1

あなたがそういうものを使うつもりなら、私はあなたがSymfonyのリポジトリを悪用していると思います。 リポジトリ内にセッターとゲッターを置き、サービスで行うにはguzzle/curlで処理する方がよいでしょう。

/コマンドコントローラ - >サービス・メソッド - >リポジトリ

次に、あなたのニーズに応じて、あなたのニーズに基づいたサービスのメソッドを公開するには、コマンド/コントローラを書くことができます。 Symfony2の中でのREST APIの開発に対処するための最良の記事が続き

2


http://welcometothebundle.com/symfony2-rest-api-the-best-2013-way/

FOSRestBundleNelmioApiDocBundleは、高速のREST API開発のための良い選択です。公式のドキュメントにアクセスして、インストール、設定、使用方法を知ることができます。

+0

質問は、APIではなくRESTクライアントのコード構造についてです –

関連する問題