【发布时间】:2018-05-24 19:46:48
【问题描述】:
我必须在给定的 Django Rest Framework 中从外部 API 调用内部 API。
当用户单击前端(在 Angular 中)中的某个按钮('View Calendar')时,会调用 DRF 的 API 端点('/viewCalendar/')。这是外部 API 端点。
在/viewCalendar/ 的端点的views.py 中,我需要编写代码以调用另一个API(例如'/commandExecForCalendar/'),该API 将实际执行该方法并返回输出。此输出将由外部 API 进一步响应前端。
外部和内部 API 都位于同一个 DRF 项目中。
myDRFProj/
commandExecApp/
views.py -------- > this CBV works for internal calls
.
.
externalAPIApp/
views.py -------- > this CBV handles API call from front-end and it will call the API for internal calls
mydrfproj/
settings.py
urls.py ---------- > holds both external and internal API endpoints
urls.py
url(r'commandExecForCalendar', commandExecAppView.cmdExcFrCalendar.as_view()),
url(r'viewCalendar', externalAPIAppView.extApiCall.as_view()),
那么,如何编写这两个视图,以便外部视图将请求数据发送到内部,并从中获取结果响应到前端?
【问题讨论】:
-
这是帮助方法或包有用的地方。您可以移动要从多个位置调用的代码的主要实现,同时保持 REST API 端点相同。因此,如果您将
commandExecApp中的代码抽象为辅助方法或类,并导入该模块以供externalAPIApp使用,您将获得所需的内容,而无需显式发出 HTTP 请求
标签: rest api django-rest-framework django-views