これを行うには、@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 か所で行われ、データへのアクセスを停止することなくアプリを切断できます。
これがあなたにも役立つことを願っています.. :)