インタフェースの設計と単一のグループ調査インタフェースの実現
4733 ワード
restfulインタフェース仕様に基づくインタフェース設計
単一クラスタ・インタフェースの実装
urlpatterns = [
# books
url(r'^books/$', views.BookAPIView.as_view()), # 、
url(r'^books/(?P\d+)/$ ', views.BookAPIView.as_view()), # 、 、 ( | )
]
単一クラスタ・インタフェースの実装
from rest_framework.views import APIView
from rest_framework.response import Response
from . import models
class BookAPIView(APIView):
def _multiple_get(self):
# , QuerySet[Obj, Obj], list
# return list(models.Book.objects.all())
# QuerySet[dict, dict]
# print(models.Book.objects.values('name', 'price'))
# QuerySet[tuple, tuple]
# print(models.Book.objects.values_list('name', 'price'))
return Response(list(models.Book.objects.values('name', 'price')))
def _single_get(self, pk):
# return Response(models.Book.objects.filter(pk=pk).values('name', 'price').first())
# try , if
try:
return Response(models.Book.objects.values('name', 'price').get(pk=pk))
except:
return Response(' ')
# 、
def get(self, request, *args, **kwargs):
pk = kwargs.get('pk')
if pk:
#
return self._single_get(pk)
else:
#
return self._multiple_get()