私は一週間かけてtastypieをプロジェクトに統合しましたが、今では「なぜそれをしたのか」と考えるのをやめられません。
私はdjangoとtastypie(RESTフレームワーク)を使用していますが、私の質問は他の言語/フレームワークにも適用できます。
私の要件は次のとおりです。1。jsonを要求する
モバイルクライアント2.html
とjsonを要求するWebクライアント
だから私は持っていた
- jsonリクエストのend_point(例:このユーザーの画像を教えてください)
- HTMLリクエストのend_point(画像などを含むユーザーのホームページを教えてください)
- 画像ディクショナリのリストを#1と#2に返すcore_service(下部)
def user_image_list_json(request): # 1
dict = service.user_image_list(request.user_id)
return serialize_as_json(dict)
def user_home(request): #2
#build other parts of user home such as `user name`
dict = service.user_image_list(request.user_id)
#stuff that dict inside html
#build other parts of the page
return html_response
#3
def image_list_user(user_id, last_image_id,request_comment_count, count):
if last_image_id is not None:
last_image_id = int(last_image_id)
queryset = AlbumImage.objects.select_related().filter(id__lt=last_image_id).filter(album__user_profile__user__id = user_id)
else:
queryset = AlbumImage.objects.select_related().filter(album__user_profile__user__id = user_id)
if count is not None:
count = min(IMAGE_LIST_COUNT, count)
queryset = queryset[0:count]
else:
count = IMAGE_LIST_COUNT
album_image_list = list(queryset)
#dict_list = [album_image.to_dict() for album_image in album_image_list]
dict_list = append_comment_list(album_image_list,request_comment_count)
return dict_list
このようにして、Webクライアントとモバイルクライアントにサービスを提供するようにWebサービスを構築しました。
今、RESTフレームワークがWeb開発を容易にするだろうと聞きました。(これは私の最初のWeb開発です)
私はtastypie(django / python REST apiフレームワーク)を適応させます
私はtastypieがレベル#3(common_service)で私のコードを置き換えることを期待していました。
しかし、実際には#1 /#3が結びついていることがわかりました。
私の理解が正しければ、私は
jsonリクエストのend_point(例:このユーザーの画像を教えてください)- HTMLリクエストのend_point(画像付きのユーザーホームページを教えてください)
- pythonディクショナリを#1と#2に返すcore_service(下部)
- #1 /#3の組み合わせとして機能するおいしいパイ
ですから、おいしいものを持っていても、#3。(コアサービス)が必要です。
変だと思う...
他のビューからtastypieapiを使用することは、私の関連する質問です。