Box.com Search API可检索确定文件夹中的所有文件

时间:2014-06-09 14:52:41

标签: search box-api

我正在搜索获取特定文件夹的所有文件的方法。

但我无法在official documentation

中找到足够的信息

我想到这样的事情:(我还假设用access_token设置一个自定义标题)

https://api.box.com/2.0/search?query=*

这种方式不起作用,我认为查询不接受正则表达式...

有什么想法吗?


PS:真正的用例有助于理解这个问题:

我的文件夹:

folderOne:
 |
 |_file1.jpg
 |
 |_file2.doc
 |
 |_folder1
 | |_file3.jpg
 | |_folder2
 |
 |_file4.pdf

根据搜索请求,我希望只获得file1.jpgfile2.docfile4.pdf

2 个答案:

答案 0 :(得分:5)

您可以通过查询文件夹的内容然后在客户端过滤file项来轻松完成此操作。

curl https://api.box.com/2.0/folders/FOLDER_ID/items \
-H "Authorization: Bearer ACCESS_TOKEN"

这将返回一组项目,您可以从中选择typefile的人。

{
  "total_count": 4,
  "entries": [
     {
        "type": "folder",
        "id": "192429928",
        "name": "folder1"
     },
     {
        "type": "file",
        "id": "818853862",
        "name": "file1.jpg"
     },
     {
        "type": "file",
        "id": "818853843",
        "name": "file2.doc"
     },
     {
        "type": "file",
        "id": "818853832",
        "name": "file4.pdf"
     }
  ]
}

<强>分页

Box将在任何文件元数据之前返回所有文件夹元数据。您可以计算这些文件夹以确定仅文件分页的适当偏移量。例如,如果您的Box文件夹有13个子文件夹,并且您希望一次翻页25个文件:

/folders/FOLDER_ID/items?limit=25&offset=13
/folders/FOLDER_ID/items?limit=25&offset=38
/folders/FOLDER_ID/items?limit=25&offset=63
/folders/FOLDER_ID/items?limit=25&offset=...

答案 1 :(得分:0)

我有一个与OP相同的问题,那就是检索所有文件,而我最初想到的唯一解决方案是解析所有文件夹(包括子文件夹,子子文件夹等),这是一个非常繁琐的任务。这种蛮力方法的另一个问题是Box的查询限制为每位用户每分钟每分钟1000个API请求,因此查询整个文件夹树是不可行的。

使用Search API是一个好主意,但是,使用Box API使用空白查询或星号进行搜索将不起作用。幸运的是,我需要的文件都是pdf格式,因此我没有搜索特定的文件名,而是查询了“ pdf”。这将返回给我该用户帐户中包含的所有PDF。我还添加了<a href="microsoft-edge:https://research.google.com/pubs/archive/44678.pdf">Link</a> ,以过滤出其文件夹名称中可能包含单词“ pdf”的所有文件夹。这是我的整个查询:

type=file

出于pagination的目的,我添加了https://api.box.com/2.0/search?query=pdf&type=file&offset=0&limit=100 offset参数。