有什么办法可以将多个API结果汇总到Django Rest Framework中的单个API中?

时间:2018-09-01 07:19:21

标签: django django-rest-framework

我设置了以下URL,该URL返回JSON API。现在,我想知道是否有任何方法可以创建另一个API,该API汇总所有这些API结果并从客户端返回一个Ajax调用,说url(r'^api/allData/(?P<pk>\d+)$',allData.as_view())
有谁知道如何在views.py中准备课程来实现这一目标?

urlpatterns = [
    url(r'^api/envelope/(?P<pk>\d+)$',envelopeData.as_view(),name='api-envelope'),
    url(r'^api/glass/(?P<pk>\d+)$',glassData.as_view(),name='api-glass'),
    url(r'^api/opaque/(?P<pk>\d+)$',opaqueData.as_view(),name='api-opaque'),
    url(r'^api/plant/(?P<pk>\d+)$',plantData.as_view(),name='api-plant'),
    url(r'^api/fan/(?P<pk>\d+)$',fanData.as_view(),name='api-fan'),
    url(r'^api/pump/(?P<pk>\d+)$',pumpData.as_view(),name='api-pump'),
    url(r'^api/people/(?P<pk>\d+)$',peopleData.as_view(),name='api-people'),
    url(r'^api/light/(?P<pk>\d+)$',lightData.as_view(),name='api-light'),
    url(r'^api/smallpower/(?P<pk>\d+)$',spData.as_view(),name='api-sp'),
]

2 个答案:

答案 0 :(得分:1)

似乎您正在使用 getHeroes(): Hero[] { return HEROES; } 。因此,您可以使用其类对象来调用视图的get()post()方法。

 这是一个例子

APIView


在您的from rest_framework.views import APIView from rest_framework.response import Response class MyView_One(APIView): def get(self, request, pk, *args, **kwargs): return Response(data={"message": self.__class__.__name__}) class MyView_Two(APIView): def get(self, request, pk, *args, **kwargs): return Response(data={"message": self.__class__.__name__}) class MyView_Three(APIView): def get(self, request, pk, *args, **kwargs): return Response(data={"message": self.__class__.__name__}) class My_All_View(APIView): def get(self, request, pk, *args, **kwargs): return_data = {} one = MyView_One() return_data.update({"one": one.get(request, pk).data}) two = MyView_Two() return_data.update({"two": two.get(request, pk).data}) three = MyView_Three() return_data.update({"three": three.get(request, pk).data} return Response(data=return_data) 中将此 My_All_View 用作其他任何视图

屏幕截图
enter image description here

答案 1 :(得分:0)

您可以使用嵌套的序列化程序,例如:

ENV RDS_PORT 5432

但是关于合并视图,我不认为。