Django应用程序与外部API连接

时间:2017-03-17 09:54:08

标签: python django api

我有这个网络应用程序,我上传文件并用它们做一些事情。 已经请求将此应用程序与另一个站点连接,并将应​​用程序上传的文件(根据请求)上传到站点。这个站点提供了一个API,并与它进行python代码交互。因为我在编程年代已经一岁了,所以我不太了解API的概念。到目前为止,我所知道的只是中间处理请求的东西。 无论如何,

提供的代码(来自网站)有一个类和几个方法,如下所示:

class ApiClient(object):
    def method1(self,param1):

到目前为止,在我不知道如何处理它并提出一些问题之前,我还没有使用外部API。

1.无论class ApiClinet(object)我得到它们提供python代码所以类是一个对象,但我该如何处理它?我是否将其设为models.Model

2.Adittionaly到我的第一个问题,我是否将这些信息存储在数据库中?所以我需要字段吗?

感谢advnace!

2 个答案:

答案 0 :(得分:1)

" API'意味着"应用程序编程接口",这实际上意味着很多大多数不相关的东西......但是当谈到网络时," API"通常意味着你可以通过发送HTTP请求与#34;进行交互。

有时您只会获得端点网址的说明,请求中的预期内容以及响应中应该返回的内容,并且您必须编写所有客户端代码自己(使用urllib或 - 更好 - requests),但有时某人(最终是API的作者)也为您选择的语言提供了一个客户端库,所以它只是一个使用此客户端库的问题。

在您的情况下,您似乎已经拥有了客户,因此只需使用它,即:

from yourapi import ApiClient
client = ApiClient(<probably some API key needed here>)
result = client.fetch_something(some, args)

可用的方法和返回的内容当然完全针对此API,应在某处记录。

您对结果的处理完全取决于您,并取决于您的项目要求是什么,因此没有人可以回答这个问题。

答案 1 :(得分:0)

import requests
REMOTE_API_URL = "https://google.com/blabla"

class ApiClient(models.Model):
    file = models.CharField(max_length=255)

    def save(self, *args, **kwargs):
        post_data = {'remote_api_file_field': self.file}
        requests.post(REMOTE_API_URL, data=post_data)
        super(ApiClient).save()

另见; https://docs.djangoproject.com/en/1.10/ref/models/instances/#customizing-model-loading