1

私はRESTfulアプリケーションに取り組んでいます.RESTfulアプリケーションは、ユーザーがスポーツ活動の結果、進行状況、およびパフォーマンスを追跡できるようにすることを目的としています.

このアプリ用に 2 つ以上のクライアントを作成したい:

1) ウェブクライアント

2) モバイルクライアント ( iOS / Android )

私はtastypieアプリを使用してdjangoでそれを書いています.RESTful APIを提供する同じアプリケーションでWebクライアントを作成する必要があるのか​​ 、それとも純粋なRESTサービスのままにして別のWebクライアントを構築する必要があるのか​​ 疑問に思います.アピ?

今のところ、両方を1つにすることの欠点は見当たりませんが、私はそのようなアーキテクチャを備えたプログラムの専門家ではないので、その背後にある議論と一緒にアドバイスを探しています.

4

3 に答える 3

1

これを行うには、@seppo-erviälä アプローチ 1 とアプローチ 2 を拡張する 4 番目の方法があります。

アプローチ 4: API ビュー + ハンドラー経由の Django ビュー

RESTful API ビューが通常行うように、RESTful リソースを返すハンドラーを作成します。しかし、このハンドラーはどこからでも呼び出すことができます。ビューが取得するのと同じリクエスト辞書を取得し、ビューが返すのと同じ JSON を返します。したがって、アーキテクチャは次のとおりです。

          Handler
         /   |   \
        /    |    \
       /     |     \
      /      |      \
RESTfulView  |    Normal Django View
             |
       Anything Else

ハンドラー:

class ResourceHandler:

    def create_resource(self, data):
        # code

    def fetch_resource(self, rId):
        # code

    # and so on

次のようにビューから呼び出します。

# /views/restfulview.py
# using django-rest-framework
from rest_framework.response import Response

class RESTCallView(APIView):

    h = ResourceHandler()

    def get(self, request, rId):
        return Response(self.h.fetch_resource(rId))


# /views/normalview.py
from django.views.generic.base import TemplateView

class SomeDjangoView(TemplateView):

    h = ResourceHandler()

    def get(self, request, rId):
        return HttpResponse(self.h.fetch_resource(rId))

もちろん、これは単なるサンプル コードであり、実際には pythonic ではありませんが、アイデアは理解できます。
私は大規模な電子商取引会社で働いており、チームメイトの何人かはこのアプローチを使用して成功を収めています。
その他の利点は次のとおりです。

  • dictを作成してに送信するだけでよいため、古いデータの移行が非常に簡単になりましたHandler。同様に、同期も非常に簡単になります。
  • API への変更は 1 か所で行われ、データへのアクセスを停止することなくアプリを切断できます。

これがあなたにも役立つことを願っています.. :)

于 2015-03-28T18:18:40.620 に答える