2011-01-01 1 views
3

私はPiston上に構築されたAPIを使ってDjangoアプリケーションを構築しています。可能な限りDRYを維持し、APIを完成させるために、内部アプリケーションがモデルではなくAPIを呼び出すようにしたいと考えています(https://github.com/raganwald/homoiconic/blob/master/2010/10/vc_without_m.mdのプロキシビューコントローラのようなものですが、 )。だから、基本的な設定は次のとおりです。ProductionでDjangoテストクライアントをAPI呼び出しに使用できますか?

Model -> API -> Application -> User Client 

私は、アプリケーションの内部クライアント・インターフェースを作成するために、いくつかのコアピストンクラスをオーバーロードすることができますが、私はちょうど同じことを達成するためにDjangoのテストクライアントを使用することができれば、私は思ったんだけど。モデルを呼び出すのではなく、記事を作成するには、

from django.test.client import Client 
c = Client() 
article = c.post('/api/articles', { 
    'title' : 'My Title', 
    'content' : 'My Content' 
}) 

これを行うためにテストクライアントを使用しない理由はありますか? (パフォーマンスなど)この特定の目的に合わせてより適したツールがありますか?

+0

興味深いアプローチ。 [resolve](http://docs.djangoproject.com/en/dev/topics/http/urls/#resolve)を使用し、返されたビューを直接呼び出すことにより、オーバーヘッドの少ないクライアントを作成できます。おそらく、テストクライアントはテストに関連する情報を格納することでオーバーヘッドが増えるでしょう。 –

答えて

6

TestClientのコードを確認した後、テストに関連する追加のオーバーヘッドはないようです。むしろ、内部要求の基本クライアントとして機能するだけです。テストクライアントを内部クライアントとして使用し、PistonのDjangoEmitterを使用してモデルオブジェクトをAPIから取得します。

テストのみが、内部リクエストメカニズムがパフォーマンスのヒット率が高すぎるかどうかを判断します。

+0

いい仕事です。結果のために投稿してください。 –

+0

これはあなたのためにできましたか? – obeattie

+0

はい、実際にはうまくいきました。アプリケーションは多くのトラフィックを取得しないので、どのように拡張するのか分かりません。 – Travis

関連する問題