我有一个Web应用程序,它使用Google API JavaScript客户端库调用多个App Engine端点。
我正在按照Google(https://developers.google.com/api-client-library/javascript/features/promises#using-promises)的建议将此应用程序从回调模式更改为承诺模式,我遇到了问题。请注意,该应用程序适用于回调模式。
我对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请求方法的path参数中包含@ApiMethod注释中声明的“path”和“name”的值。
即。对于上述端点,以下路径有效: https://myappenginename.appspot.com/_ah/api/customerApi/v1/customerByParent/listByParent
奇怪的是,这不适用于同类的其他一些端点。我收到404 HTTP错误或503错误。
当您使用API Explorer查询端点时,我也尝试使用“请求”下显示的路径,但没有成功....
是否有关于如何使用Google API JavaScript客户端库调用带有承诺的App Engine端点的详细文档?我还没找到。你有什么建议可以分享吗?
提前致谢
答案 0 :(得分:1)
实际上,请求方法使用“path”参数工作所有时间,该参数由@ApiMethod注释中声明的“path”和“name”的值组成...
如果它对某些端点不起作用,那就是我的错误。但是,不知道哪个错误。
请注意,我注意到向JavaScript请求方法传递App Engine端点的正确httpMethod非常重要。默认情况下,请求methid假定它是GET。如果你的端点在@ApiMethod注释中有httpMethod = ApiMethod.HttpMethod.POST,你应该传递参数'method':'POST',详见doc:https://developers.google.com/api-client-library/javascript/reference/referencedocs#gapiclientrequestargs