如何使用 axios 将 api 请求设置为 google 驱动器 api
how to set api request to google drive api using axios
我正在处理一个 google 驱动器项目,但我无法使用 Axios 将搜索参数发送到 google API
来自前端反应
任何人都可以向我解释如何在 google 驱动器 api url
中编写查询
- 按日期搜索所有文件和文件夹
- 按大小查找文件
- 查找所有空文件夹
- 按ppt、图片等类型查找文件
Axios 请求看起来像那样
axios.get('https://www.googleapis.com/drive/v3/files?access_token='+accessToken+'&q=mimeType%3D%22application%2Fvnd.google-apps.folder%22').then(res=>{
console.log(res)
setFolders(res.data.files)
}).then(err=>{
console.log(err)
})
提前致谢:)
Axios 不是您的问题,API 不支持您在大多数情况下尝试做的事情。
Search all files and folders by date
你真的不能。全部下载并在本地搜索
Find a file by size
你不能。全部下载并在本地搜索
Find all empty folders
这并不容易,但会有很多要求。您可以使用 q 仅获取文件夹,然后使用父项发出单独的请求,然后查看是否返回任何文件。
Find a file by type such as ppt, image, etc
使用 q 参数并按 MIME 类型搜索,您只需要 google 您要查找的文件的正确 MIME 类型。
mimeType='application/vnd.ms-powerpoint'
您应该查看 Search terms refrence 文档,它会告诉您可以搜索的内容。
这就是你如何使用 Google Drive API 和 axios 来解决你的每个问题:
- 按日期搜索所有文件和文件夹
是的,你可以!您可以使用 createdTime 和 modifiedTime 过滤器(查看更多可用查询词 here)
- 按大小查找文件
可以,但是,您需要 return file/folder 的大小并按特定大小过滤生成的文件,您不需要下载文件,但是它可能有点低效,因为您需要先获取文件(使用查询过滤器来限制结果)。
- 查找所有空文件夹
是的,你可以!但与上一点类似,您需要遍历每个文件夹并使用文件夹 id 搜索文件,检查文件是否为空。
确保仅使用 mimeType 过滤器 application/vnd.google-apps.folder
来过滤文件夹
- 按ppt、图片等类型查找文件
使用 mimeType 即 image/jpeg
Google drive search filters
View in Fusebit
// Search all files and folders by date
const dateFilter = new Date('January 01, 2022').toISOString();
// 1. Search all files and folders by date
const filesFilteredByDate = await axios.get('https://www.googleapis.com/drive/v3/files', {
params: {
q: `createdTime >= '${dateFilter}' or modifiedTime >= '${dateFilter}'`,
fields: 'files(id,name,modifiedTime,createdTime,mimeType,size)',
spaces: 'drive',
},
headers: {
authorization: `Bearer ${access_token}`
}
});
// 2. Find a file by size
const sizeInBytes = 1024;
const filesFilteredBySize = filesFilteredByDate.data.files.filter(file => Number(file.size || 0) >= sizeInBytes);
// 3. Find all empty folders
const emptyFoldersSearch = await axios.get('https://www.googleapis.com/drive/v3/files', {
params: {
q: `mimeType = 'application/vnd.google-apps.folder'`,
fields: 'files(id, name)',
spaces: 'drive',
},
headers: {
authorization: `Bearer ${access_token}`
}
});
const emptyFolders = [];
for await (const folder of emptyFoldersSearch.data.files) {
const childrenResponse = await axios.get('https://www.googleapis.com/drive/v3/files', {
params: {
folderId: folder.id,
spaces: 'drive',
},
headers: {
authorization: `Bearer ${googleClient.fusebit.credentials.access_token}`
}
});
if (!childrenResponse.data.files.length) {
emptyFolders.push(folder);
}
}
// 4. Find a file by type such as ppt, image, etc
const mimeType = 'image/jpeg';
const filesFilteredByType = await axios.get('https://www.googleapis.com/drive/v3/files', {
params:{
q: `mimeType:'${mimeType}'`,
fields: 'files(id,name,mimeType,size)',
spaces: 'drive',
},
headers: {
authorization: `Bearer ${access_token}`
}
});
console.log(`Found ${filesFilteredByDate.data.files.length} files/folders created or modified at ${dateFilter}`);
console.log(`Files larger than ${sizeInBytes} bytes:`, filesFilteredBySize);
console.log(`Found ${emptyFolders.length} empty folders`);
console.log(`Found ${filesFilteredByType.data.files.length} images of type ${mimeType}'`);
我正在处理一个 google 驱动器项目,但我无法使用 Axios 将搜索参数发送到 google API 来自前端反应
任何人都可以向我解释如何在 google 驱动器 api url
中编写查询- 按日期搜索所有文件和文件夹
- 按大小查找文件
- 查找所有空文件夹
- 按ppt、图片等类型查找文件
Axios 请求看起来像那样
axios.get('https://www.googleapis.com/drive/v3/files?access_token='+accessToken+'&q=mimeType%3D%22application%2Fvnd.google-apps.folder%22').then(res=>{
console.log(res)
setFolders(res.data.files)
}).then(err=>{
console.log(err)
})
提前致谢:)
Axios 不是您的问题,API 不支持您在大多数情况下尝试做的事情。
Search all files and folders by date
你真的不能。全部下载并在本地搜索
Find a file by size
你不能。全部下载并在本地搜索
Find all empty folders
这并不容易,但会有很多要求。您可以使用 q 仅获取文件夹,然后使用父项发出单独的请求,然后查看是否返回任何文件。
Find a file by type such as ppt, image, etc
使用 q 参数并按 MIME 类型搜索,您只需要 google 您要查找的文件的正确 MIME 类型。
mimeType='application/vnd.ms-powerpoint'
您应该查看 Search terms refrence 文档,它会告诉您可以搜索的内容。
这就是你如何使用 Google Drive API 和 axios 来解决你的每个问题:
- 按日期搜索所有文件和文件夹
是的,你可以!您可以使用 createdTime 和 modifiedTime 过滤器(查看更多可用查询词 here)
- 按大小查找文件
可以,但是,您需要 return file/folder 的大小并按特定大小过滤生成的文件,您不需要下载文件,但是它可能有点低效,因为您需要先获取文件(使用查询过滤器来限制结果)。
- 查找所有空文件夹
是的,你可以!但与上一点类似,您需要遍历每个文件夹并使用文件夹 id 搜索文件,检查文件是否为空。 确保仅使用 mimeType 过滤器 application/vnd.google-apps.folder
来过滤文件夹- 按ppt、图片等类型查找文件
使用 mimeType 即 image/jpeg
Google drive search filters | View in Fusebit |
---|
// Search all files and folders by date
const dateFilter = new Date('January 01, 2022').toISOString();
// 1. Search all files and folders by date
const filesFilteredByDate = await axios.get('https://www.googleapis.com/drive/v3/files', {
params: {
q: `createdTime >= '${dateFilter}' or modifiedTime >= '${dateFilter}'`,
fields: 'files(id,name,modifiedTime,createdTime,mimeType,size)',
spaces: 'drive',
},
headers: {
authorization: `Bearer ${access_token}`
}
});
// 2. Find a file by size
const sizeInBytes = 1024;
const filesFilteredBySize = filesFilteredByDate.data.files.filter(file => Number(file.size || 0) >= sizeInBytes);
// 3. Find all empty folders
const emptyFoldersSearch = await axios.get('https://www.googleapis.com/drive/v3/files', {
params: {
q: `mimeType = 'application/vnd.google-apps.folder'`,
fields: 'files(id, name)',
spaces: 'drive',
},
headers: {
authorization: `Bearer ${access_token}`
}
});
const emptyFolders = [];
for await (const folder of emptyFoldersSearch.data.files) {
const childrenResponse = await axios.get('https://www.googleapis.com/drive/v3/files', {
params: {
folderId: folder.id,
spaces: 'drive',
},
headers: {
authorization: `Bearer ${googleClient.fusebit.credentials.access_token}`
}
});
if (!childrenResponse.data.files.length) {
emptyFolders.push(folder);
}
}
// 4. Find a file by type such as ppt, image, etc
const mimeType = 'image/jpeg';
const filesFilteredByType = await axios.get('https://www.googleapis.com/drive/v3/files', {
params:{
q: `mimeType:'${mimeType}'`,
fields: 'files(id,name,mimeType,size)',
spaces: 'drive',
},
headers: {
authorization: `Bearer ${access_token}`
}
});
console.log(`Found ${filesFilteredByDate.data.files.length} files/folders created or modified at ${dateFilter}`);
console.log(`Files larger than ${sizeInBytes} bytes:`, filesFilteredBySize);
console.log(`Found ${emptyFolders.length} empty folders`);
console.log(`Found ${filesFilteredByType.data.files.length} images of type ${mimeType}'`);