使用gapi.client.drive.files.insert或对所有内容使用gapi.client.request

时间:2013-10-07 19:57:42

标签: javascript google-drive-api

我正在尝试了解如何使用客户端Javascript访问Google云端硬盘。我写了一些测试代码来插入一个只有元数据的新文件。我找到了一个使用此代码的示例:

var request = gapi.client.request({
   'path': '/drive/v2/files',
   'method': 'POST',
   'body': {
      "title" : "Meta File 1.json",
      "mimeType" : "application/json",
      "description" : "This is a test of creating a metafile"
      }
   });

上面的代码运行正常,但它没有使用gapi.client.drive.files.insert。所以我搜索了stackoverflow并尝试了下面的代码:

var mydata = {};
mydata.title = "Meta File using Insert.json";
mydata.mimeType = "application/json";
mydata.description = "We are using insert to create a new file, but only the metadata.";

var request = gapi.client.drive.files.insert( {'resource': mydata} );

此代码也正常,所以我的问题是我应该使用哪个?有没有理由使用像files.insert这样的各种api调用,还是应该总是使用gapi.client.request来处理所有事情?

1 个答案:

答案 0 :(得分:7)

你实际上有三个选择......

  1. gapi..request(您的第一个选择)
  2. gapi..files(你的第二个选择)
  3. 普通javascript(即根本不使用任何谷歌库)
  4. 每个选项的基础是相同的HTTP请求/响应,因此功能相同。这可能归结为个人偏好和信任。

    个人偏好 你想了解你的应用程序在堆栈中一直在做什么,或者你更喜欢使用高级抽象?

    信任, Google JS库是封闭源代码,可以任意更新,而且不会发出警告。因此,如果G工程师打破了它(就像他们过去所做的那样),那么你无处可转,你的应用程序已关闭,直到它被修复为止。如果你有一个主流用例,它应该得到修复,但不能保证。如果您正在使用边缘情况(可能是一个不寻常的nodejs配置,或特殊的浏览器),您可能会被高高挂起。

    我个人使用选项1,因为如果Drive团队向API添加新功能,我可以立即使用它,而无需等待JS Client Library维护人员也支持它。它还使调试更容易,因为通过线路的内容与我的代码直接相关。

    现在Drive支持CORS上传,我正在从选项1迁移到选项3.如果你想构建chrome扩展或打包的应用程序,选项3也是唯一可行的选项。