2013-10-07 24 views
3

我想了解如何以最佳方式使用客戶端Javascript訪問Google Drive。我編寫了一些測試代碼來插入僅包含元數據的新文件。我發現,使用該代碼的例子:要使用gapi.client.drive.files.insert或對所有內容使用gapi.client.request

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。所以我搜索計算器和嘗試下面的代碼:

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}); 

此代碼工作正常還,所以我的問題是,我應該使用哪一個?是否有任何理由使用各種AP​​I調用像files.insert,或者我應該總是使用gapi.client.request的一切?

回答

6

實際上,你有三種選擇...

  1. gapi..request(你的第一個選項)
  2. gapi..files(你的第二個選項)
  3. 普通的JavaScript(即不使用任何谷歌圖書館)

基礎每個選項是相同的HTTP請求/響應,所以功能是相同的。這可能歸結爲個人偏好和信任。

個人偏好 您是否想了解您的應用程序在堆棧中一直在做什麼,或者您更喜歡使用高級別抽象?

Trust, Google JS庫是封閉源代碼,並且可以任意更新,而且不會有任何警告。所以如果G工程師破壞它(就像他們以前所做的那樣),你無處可轉,你的應用程序一直處於關閉狀態,直到它被修復。如果你有一個主流用例,它應該是固定的,但是沒有保證。如果您使用的是邊緣案例(可能是一種不尋常的nodejs配置或特殊瀏覽器),那麼您可能會變得非常乾燥。

我個人使用選項1的基礎是,如果Drive團隊向API添加新功能,我可以馬上使用它,而無需等待JS客戶端庫維護人員支持。它還使得調試變得更容易,因爲線路上的東西直接與我的代碼相關。

現在,該驅動器支持CORS上傳,我正在從選項1遷移到選項3.如果您要構建Chrome擴展或打包的應用程序,選項3也是唯一可行的選項。

+0

這是一個很好的答案。您列舉了不同類型並討論了短期/長期使用案例這一事實很有幫助。 此外'gapi.client.drive.files'不再工作。我經常會遇到一個錯誤:'Uncaught TypeError:無法讀取未定義的屬性'文件'。 如果我想試用#3普通javascript選項,您是否有任何資源如何編寫代碼? – Aspen

+1

謝謝。讀回我的答案,這有點過時了。因爲我使用Angular。我決定編寫我自己的庫github.com/pinoyyid/ngGAPI以包裝選項3和Angular promise。它對我來說很好。 – pinoyyid

相關問題