2016-05-30 3 views
1

Google API JavaScriptクライアントライブラリを使用して複数のApp Engineエンドポイントを呼び出すWebアプリケーションがあります。約束モードでJavaScriptライブラリを使用してApp Engineエンドポイントを呼び出す方法

私は現在、このアプリケーションをGoogle(https://developers.google.com/api-client-library/javascript/features/promises#using-promises)の推奨するコールバックモードから約束モードに変更しており、問題が発生しています。アプリはコールバックモードでうまく動作することに注意してください。

約束モードでの私の問題は、リクエストメソッドを呼び出すときに使用する正しいパス引数あるものを見つけることです:

JavaScritコード:「customerApi」で

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

エンドポイントの定義:それが満たさJavaScriptのリクエストのパス引数に含めることによって動作します私のエンドポイントの数については

@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 { 

hod、@ApiMethodアノテーションで宣言された "path"と "name"の値。上記のエンドポイントの

すなわち、次のパスは動作します: https://myappenginename.appspot.com/_ah/api/customerApi/v1/customerByParent/listByParent

を不思議なことに、これは同じ種類のいくつかの他のエンドポイントでは動作しません。 404 HTTPエラーまたは503エラーが表示されます。

私はまた、あなたがAPIをエクスプローラではなく、成功せずにエンドポイントを照会すると、「要求」の下に表示されたパスを使用してみました....

はとApp Engineのエンドポイントを呼び出す方法上の任意の詳細なドキュメントがありますGoogle API JavaScriptクライアントライブラリで約束していますか?私は何も発見していない。あなたは共有するいくつかのアドバイスがありますか?

事前

答えて

1

のおかげで実際にリクエストメソッドが@ApiMethod注釈で宣言されているように「パス」と「名前」の値で構成される「パス」引数を指定してすべての時間を動作しません...

いくつかのエンドポイントではうまくいかなかったのは間違いでした。しかし、間違いを知りません。

JavaScriptリクエストメソッドにApp Engineエンドポイントの正しいhttpメソッドを渡すことが非常に重要であることに気付きました。デフォルトでは、要求メソッドはそれがGETであるとみなします。エンドポイントに@ApiMethodアノテーションのhttpMethod = ApiMethod.HttpMethod.POSTがある場合は、引数 'method'を渡す必要があります:文書で詳しく説明されている 'POST':https://developers.google.com/api-client-library/javascript/reference/referencedocs#gapiclientrequestargs

関連する問題