如何使用请求库或BOX API创建对BOX的Python请求?

问题描述 投票:1回答:1

我对REST API开发完全陌生,仅通过一个简单的python请求就在很多方面苦苦挣扎。我正在尝试从BOX开发系统(类似于Dropbox)获取文件,并且我一直在阅读文档,但仍然无法弄清。我会尝试更具体:

我想创建一个python请求并从BOX获取文件。理想情况下,哪种文件类型是cuz都无关紧要,我想获取等效的JSON文件,以便随后可以修改文件的某些属性。我正在打印响应,以检查是否收到200条响应消息,说明请求已成功。但是然后当我使用json.dumps()时,得到的典型错误为JSONDecodeError:预期值:第1行第3列(字符0)。到目前为止,这是我一直在尝试的方法:

import json
import requests
import sys

file_id = 678814253283
r = requests.get("https://app.box.com/file/678814253283", {'Authorization': 'Bearer '+ access_token})
print(r)
json_obj = json.dumps(r.json(), indent=4)
print(json_obj)

我怀疑地址不是正确的地址,因为我给出的地址将我直接带到文件而不是api的一个-> [https://api.box.com/2.0/files/:file_id。问题是,当我尝试使用BOX API文档时,应该从PDF文件中获取响应示例,显示在此处-> https://developer.box.com/reference/get-files-id/。但是,我得到的是:Box File-678814253283(Test.pdf)

这是我尝试使用BOX API文档的代码:

# Import two classes from the boxsdk module - Client and OAuth2
from boxsdk import Client, OAuth2

# Define client ID, client secret, and developer token.
CLIENT_ID = ""
CLIENT_SECRET = ""
ACCESS_TOKEN = ""

# Create OAuth2 object. It's already authenticated, thanks to the developer token.
oauth2 = OAuth2(CLIENT_ID, CLIENT_SECRET, access_token=ACCESS_TOKEN)

# Create the authenticated client
client = Client(oauth2)

file_id = '678814253283'
file_info = client.file(file_id).get()
print(file_info)

我真的不知道我在做什么错。看起来应该有点愚蠢,但是我在这里完全是个初学者。虽然没有编程,但是我是REST API开发的初学者。也许我也误会了很多概念...

非常感谢!

json python-requests box-api
1个回答
0
投票

在第一个示例中,您确实使用的是Web应用URL,而不是API的URL。如果将其更改为:,则您的代码可能会更好地工作:

import json
import requests
import sys

file_id = 678814253283
r = requests.get("https://api.box.com/2.0/files/678814253283", {'Authorization': 'Bearer '+ access_token})
print(r)
json_obj = json.dumps(r.json(), indent=4)
print(json_obj)

现在,要注意的一件事是,这将使您获得有关文件的信息(JSON格式),而不是实际的文件内容。

要获取文件内容,您需要调用https://api.box.com/2.0/files/678814253283/content。这将返回文件的二进制数据,然后可以将其写入文件。

[在许多情况下,您将需要使用我们的SDK。我强烈建议使用SDK方法下载文件内容:

CLIENT_ID = ""
CLIENT_SECRET = ""
ACCESS_TOKEN = ""

oauth2 = OAuth2(CLIENT_ID, CLIENT_SECRET, access_token=ACCESS_TOKEN)

# Create the authenticated client
client = Client(oauth2)

file_id = '678814253283'
file_info = client.file(file_id).content()
print(file_info)

这里的区别是第二行:

file_info = client.file(file_id).content()

有关此端点的更多信息,请单击此处:

https://developer.box.com/reference/get-files-id-content/https://developer.box.com/guides/downloads/file/

© www.soinside.com 2019 - 2024. All rights reserved.