1

私はgeodjangoにシンプルなgisシステムを構築しています。REST APIのための別のアプリケーションを作成するか、それを私の動作中のアプリケーションの中に置きますか?

アプリは一連のマップを表示しており、これらのマップにはRESTFUL APIも提供しようとしています。

私は、API用に別個のアプリケーションを作成するか、既存のアプリ内で作業するかの決定に直面しています。
2つのアプリケーションは論理的に別物ですが、同じモデルを共有しています。

だから、何が良いと思われますか?

答えて

4

いずれのアプローチでも問題が発生する可能性がありますが、関連するアプリ内でAPIを維持する方が良いと思います。 APIのコードはモデルや他のユーティリティメソッドに依存するため、同じアプリケーションにAPIを保存すると、より密接なコードにつながります。 Djangoアプリケーションの背後にある非常に理念に加えて、それらを分離して再利用できるということがあります。

以前は、テンプレートを保存する場合と同様のケースがありました。 Djangoの初期には、人々は同じグローバルフォルダ(アプリケーションの名前でサブディレクトリを持つ)にすべてのテンプレートをまとめて保存することを好みましたが、最近ではDjangoもこのアプローチを落胆させ始めていますそれぞれのアプリ自体にテンプレートを保存する。

3

@ hspandherの回答は非常に堅実で、ほとんどのニーズを実装することができます。

あり、もう少し複雑に達成することであってもよい別のアプローチかかわらずですが、あなたは、実験性と再利用性のために必要な全てのスペースを与える:

セパレートすべて:

  1. バックエンド:

    APIをビジュアライゼーションから分離してください(以下のフロントエンドを参照)。それを完全に自律して自己完結型にします実現した。
    これは、Djangoプロジェクト内のアプリケーションを分離して、外部要因(例えば、クライアント、別のアプリなど)がアプリケーションと「話す」ための唯一の方法でなければならない対応するAPIを公開することで実現できます。

  2. フロントエンド:

    は、あなたのAPIが露出していると仮定すると、あなたが効果的にロジックから可視化を分離し、そのため、あなたのマップを視覚化する方法についての多くのオプションを持っています。 たとえば、APIにリクエストを行い、leaflet.js,D3.jsなどのツールを使用して回答を視覚化できるReactアプリケーションを作成できます。

概要:

この分離のメリットは以下のとおりです。ロジックと実装の

  • 分離。
  • メンテナンス性が向上しました。
  • 多くのツールとテクノロジオプションを使用できます。
  • 再利用性。

側の注意点として、あなたはおよそ12 factor方法を読むことができますし、あなたの実装でそれを使用して考えます。

+0

私はOpenStreetMapでgeojsonをレンダリングしています。これは、leaflet.jsまたはD3.jsで作業する方が適していますか? – adnanmuttaleb

+0

@adnanmuttalebそれはもっと個人的な好みの問題ですが、私はリーフレットが好きです.jsもう少し。 –

関連する問題