2

私は Django アプリケーション (ソーシャル ネットワーク) を作成しており、モノリシック プロジェクトを UI と API の 2 つのプロジェクトに分割することを考えています。たとえば、Django は、web.py に記述されたページをレンダリングし、API とやり取りして API からデータを取得するためにのみ使用されます。

プロは次のとおりです。

  1. API を独自に開発およびテストできます。
  2. 将来的には、他の UI (モバイルなど) が表示される可能性があり、サービスが必要になります。
  3. Web UI の開発を外注する予定なので、アプリケーションに 2 つのモジュールがある場合、アプリケーションのロジックを共有せずに、UI の 1 つだけを外部に提供できます。

短所は次のとおりです。

  1. 私は一人で仕事をしていますが、2 つのプロジェクトを開発するのは 1 つよりも難しいです。
  2. クールな Django 管理パネルを使用できなくなります。自分で書く必要があります。
  3. web.py は Django に比べて低レベルです。

ブレインダンプのようなものですが、UIモジュールと独立APIモジュールでWebアプリケーションを作成した経験を共有していただければ幸いです。

更新(マイクが尋ねたように、より具体的な質問)

さまざまなクライアント アプリケーションで使用できるソーシャル ネットワークの REST API を作成するために、どの Python フレームワークを使用しますか? JSON のみを返す web.py を使用していて、Django for Web でレンダリングするのは良い考えですか?

ありがとう、ボリス。

4

1 に答える 1

1

私はあなたと同じような状況にありました。結局、Django で UI 部分と API 部分の両方を作成しました。現在、私は同じプロセス/プロジェクトから両方を提供しています。UI開発を外注したいとおっしゃいましたが、聞いてください。

それまでの間、私は django-piston を使用して RESTful フロントエンドを実装しましたが、少し準備が必要でした:

  1. すべての DB および ORM アクセスをライブラリにカプセル化します。これは、プロジェクト全体に対して行うことも、アプリごとに行うこともできます。ライブラリは、DB アクセスの低レベルのラッパーであるだけでなく、「all_comments_posted_by_friends()」などの高レベルの「質問」にも使用できます。これにより、次の 2 つのことが達成されます。
    1. 複数の場所で再実装することなく、API ビューだけでなく UI ビューからも既定のクエリを呼び出すことができます。
    2. NoSQL データベース (たとえば、他の分散ストレージ モデル) に移行したい場合は、基になる DB ロジックの一部 (すべてではないにしても) を後で置き換えることができます。アプリ全体を事前にセットアップすることができます。開始時に複雑な詳細について実際に心配する必要はありません。
  2. API の認証レイヤーは、プログラムによるアクセスと通常の Django 認証のために HMAC/トークン ベースのヘッダーを受け入れることができました。私はビューを設定して、プログラム クライアント用に (コンテンツ タイプに基づいて) プレーンな JSON をレンダリングし、人間がブラウザーから閲覧した場合にデータ構造を HTML で (クリック可能なリンクとクリック可能なドキュメント文字列を使用して) レンダリングします。 . これにより、ドキュメントを読まなくても人間が API を完全に探索およびクリックできるようになると同時に、JSON を介してクライアントが簡単に処理できるようになります。

実際、私が構築したデータベース層は内部 API として機能します。必要に応じて、この同じデータベース層を複数のアプリケーション、複数のプロセスから使用できます。UI ビューと REST ビューはどちらも Django で実装されました。それらは同じプロセスにあっても、別のプロセスにあってもかまいません (現在同じデータベースにアクセスできる限り)。

于 2012-08-17T18:03:12.153 に答える