如何在 Promise 模式下使用 JavaScript 库调用 App Engine 端点

问题描述 投票:0回答:1

我有一个 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 请求方法的路径参数中包含 @ApiMethod 注释中声明的“路径”和“名称”的值。

即对于上述端点,以下路径有效: https://myappenginename.appspot.com/_ah/api/customerApi/v1/customerByParent/listByParent

奇怪的是,这对于同类的其他一些端点不起作用。我收到 404 HTTP 错误或 503 错误。

当您使用 API Explorer 查询端点时,我还尝试过使用“请求”下显示的路径,但没有成功......

是否有关于如何使用 Google API JavaScript 客户端库通过 Promise 调用 App Engine 端点的详细文档?我还没有找到。您有什么建议可以分享吗?

提前致谢

google-cloud-platform google-app-engine google-cloud-endpoints
1个回答
1
投票

实际上,请求方法始终使用由 @ApiMethod 注释中声明的“path”和“name”值组成的“path”参数来工作...

如果它对某些端点不起作用,那对我来说就是一个错误。但不知道哪个错误。

请注意,我注意到将 App Engine 端点的正确 httpMethod 传递给 JavaScript 请求方法非常重要。默认情况下,请求方法假定它是 GET。如果您的端点在 @ApiMethod 注释中具有 httpMethod= ApiMethod.HttpMethod.POST,则应传递参数 'method': 'POST',如文档中详述:https://developers.google.com/api-客户端库/javascript/reference/referencedocs#gapiclientrequestargs

© www.soinside.com 2019 - 2024. All rights reserved.