2016-05-30 42 views
1

我有一個Web應用程序,它使用Google API JavaScript客戶端庫調用多個App Engine端點。如何使用承諾模式下的JavaScript庫調用App Engine端點

我目前正在根據Google(https://developers.google.com/api-client-library/javascript/features/promises#using-promises)的建議將此應用程序從回撥模式更改爲承諾模式,並且遇到問題。請注意,該應用程序在回調模式下運行良好。

我與承諾模式的問題是要找到什麼是正確路徑參數調用請求方法時使用:

JavaScrit代碼:

var params = {'webSafeKeyParent’: ‘neN4fm15xW52b2ljZXMtb19saW5lmlYLEglBY1NFwpRpdHkYgICAgQj97AoM’}; 
gapi.client.request({ 
     'path': 'https://myappenginename.appspot.com/_ah/api/customerApi/v1/?????????', 
     'params': params 
}).then(function(response) { 
     // Handle response  
}, function(reason) { 
     // Handle error 
}); 

在「customerApi」端點定義:

@ApiMethod(
     name = "listByParent", 
     path = "customerByParent/{webSafeKeyParent}", 
     httpMethod = ApiMethod.HttpMethod.GET, 
     scopes = {Constants.EMAIL_SCOPE}, 
     clientIds = {Constants.WEB_CLIENT_ID, com.google.api.server.spi.Constant.API_EXPLORER_CLIENT_ID}, 
     audiences = {Constants.ANDROID_AUDIENCE}) 
public List<Customer> listByParent(final User user, @Named("webSafeKeyParent") final String webSafeKeyParent, @Nullable @Named("cursor") String cursor, @Nullable @Named("limit") Integer limit) throws UnauthorizedException { 

對於我的很少端點,它的工作原理是包含在符合JavaScript請求的路徑參數中hod,@ApiMethod註釋中聲明的「path」和「name」的值。

即對於上述端點,以下路徑的工作原理: https://myappenginename.appspot.com/_ah/api/customerApi/v1/customerByParent/listByParent

奇怪的是這並不適用於同類的一些其它端點工作。我收到一個404 HTTP錯誤或503一個。

我也試過用「請求」下顯示在查詢與API瀏覽器,但沒有成功終點的路徑....

是否有關於如何調用與App Engine端點的任何詳細資料承諾,與谷歌API JavaScript客戶端庫?我還沒有找到。你有什麼建議可以分享嗎?

在此先感謝

回答

1

其實請求方法不工作的所有時間與「路徑」和「名」的值組成的「路徑」的說法作爲@ApiMethod註解來聲明...

如果它對某些端點不起作用,那麼這是我的錯誤。不過,不知道哪個錯誤。

請注意,我已經注意到向JavaScript請求方法傳遞App Engine端點的正確httpMethod非常重要。默認情況下,請求方法假定它是一個GET。如果您的端點在@ApiMethod註釋中有httpMethod = ApiMethod.HttpMethod.POST,則應傳遞參數'method':'POST',如文檔中所述:https://developers.google.com/api-client-library/javascript/reference/referencedocs#gapiclientrequestargs