【问题标题】:Consume an API in Django REST, server side, and serve it ,client side, in Angular在 Django REST 中使用 API,服务器端,并在 Angular 中为客户端提供服务
【发布时间】:2021-04-16 15:33:11
【问题描述】:

我有一个使用 API 客户端的 Angular 应用程序。由于这样做是不好的做法(我不想公开我的 API 凭据),所以我决定在 myapp 变大之前拆分为后端/前端。 我成功地将我的 Angular 实现到 Django REST 框架应用程序中,并且一切正常。 但现在我需要更改我的 API 逻辑并让 DRF 使用外部 API

我有:

Angular 扩展数据

现在我有:

Django/Angular 扩展数据

我需要什么:

Angular Django ext 数据

但是我很困惑如何完成它。我有在 DRF 中设置 API 端点的经验,但仅适用于 DRF 中模型的数据。我也知道如何在 Django 中使用 API。 但是如何链接两个 API 调用呢? 我是否必须创建一个模型来存储查询和响应? 即使返回的数据一直是json,我是否需要编写序列化程序? 现在我的前端将如何获得来自外部 API 的数据?

我需要有人向我解释这项任务的模式是什么。

【问题讨论】:

    标签: django angular api django-rest-framework


    【解决方案1】:

    假设您有一个 FBV 映射到 django 中的 URL,如下所示:

    url: /api/animals/<str:key>

    @add_decorators_as_needed
    def animals_view(request, key=None):
      data = requests.get(f'{API_URL}/{key}?api_key={API_KEY}') # grab data from ext provider
      json_data = ... # convert to json or do other manipulations
    
      return json_data # return data to the frontend
    

    然后在前端,您的 Angular 应用程序中,您可以对您的 django 应用程序的 /api/animals/cow url 执行一个 get 请求,并从外部提供程序检索一头牛的数据,而不会暴露您的 API_KEY。

    所以流程是这样的:

    Angular 从 Django 请求数据,Django 从外部提供者那里获取数据,如果需要,进行一些数据处理,然后将该数据返回给 Angular。您不必在数据库中存储任何内容(但您当然可以这样做,例如记录一些内容,这是可选的)。

    【讨论】:

      猜你喜欢
      • 2018-02-22
      • 2019-09-22
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 1970-01-01
      相关资源
      最近更新 更多