首页 文章

GAE Cloud endpoints - 部署后Api不更新

提问于
浏览
20

我开始在我的GAE项目中使用 Cloud endpoints ,但是在服务器上没有更新api时遇到了问题 .

  • localhost:8888 / _ah / api / explorer没问题 .

但是当我部署时,没有任何改变 .

  • myapp.appspot.com:8888/_ah/api/explorer很糟糕

进一步调查显示url endpoints 更新示例:https://myapp.appspot.com/_ah/api/myapp/v1/foo/list

但加载的客户端API仍然不正确 . 例如:gapi.client.load('myapp','v1',callback,url); gapi.client.myapp.foo.list();

如果我将调用从foo / list更改为foo / list2,其余的url会更新,api包不会 .

6 回答

  • 0

    当我使用此URL调用API时,我遇到了同样的错误 Not Found (404错误代码)

    https: // MY_APP_ID.appspot.com / _ah / api / MY_SERVICE / v1 / user

    我尝试了一切,最后通过从 WEB-INF 删除 discovery 文件并仅保留 MY_SERVICE-v1.api 然后重新部署API来修复它 . 它现在工作正常 .

  • 2

    在部署新版本后,我也得到陈旧的API发现文档,GAE花了几分钟才开始为我提供新版本 .

  • 0

    我有同样的问题,我检查了管理日志,其他日志等...但仍然我的API没有更新到最新版本 .

    所以我决定检查我编写的最后一个方法的API代码(我在Java 7中编写) . 我发现GAE不喜欢这样的陈述:

    if (!blocked){ .... }
    

    我切换到:

    if (blocked == false) { ... }
    

    它就像一个魅力 . 因此,从它的外观来看,GAE扫描新的API方法并且不接受一些快捷方式 .

  • 22

    我将尝试涵盖人们可能遇到的两种情况:

    客户端:

    Google APIs Explorer网络应用程序会积极缓存,因此您需要在更新API服务器端时清除缓存或强制刷新,以查看客户端中的更改 .

    服务器端(在已部署的 生产环境 应用引擎应用中):

    如果您遇到部署问题,调试时有两个地方可以查看:

    Completed update of a new default version
    

    不久之后你应该看到:

    Successfully updated API configuration
    

    如果此消息指示API配置更新失败,则应再次部署 . 如果所述错误持续存在,您应该通知我们一个错误 . 如果您没有看到有关API配置的任何消息,则应检查路径配置中是否明确命名了路径 /_ah/spi/.* (对于Python为 app.yaml ,对于Java为 web.xml ) .

    • 部署后检查应用程序日志(https://appengine.google.com/logs?&app_id=s~YOUR-APP-ID) . 部署完成后,Google的API基础架构会在您的应用程序中向 /_ah/spi/BackendService.getApiConfigs 发出请求,以便您的API配置(如JSON)可以在Google _2527333的API基础架构中注册,无需注册 .

    • 如果您一直收到 302 请求重定向 /_ah/spi/BackendService.getApiConfigs ,那是因为您(或您生成的API配置)指定了"bns adapter",它使用 http: 作为API根目录中的协议,但是 web.xml (Java)或 app.yaml (Python) )要求通过 /_ah/spi 的路径是安全的 . 这将使用 http: 作为协议的请求被重定向(使用 302 )到具有 https: 作为协议的同一页面 . 在进入实验之前,这是在Trusted Tester论坛上的discussed .

  • 0

    这就是发生在我身上的事 .

    我在localhost上测试了我的 endpoints ,它工作正常 .

    我在appspot上部署了我的 endpoints ,当我向它发出请求时,我在浏览器中收到了“Not found”消息 .

    所以我查看了日志,当我向 endpoints 发出请求时,我在favicon文件上看到了404 http错误代码 . 实际上,我忘记将该文件放入我的部署中 .

    所以我用favicon文件重新部署了我的战争,404 http代码消失了, endpoints 也在appspot上工作正常!

    我意识到这可能听起来很愚蠢,但这正是我所经历的 . (我为我可怜的英语道歉)

  • 1

    我注意到,如果你第一次上传你的应用程序,而你的web.xml中没有以下内容:

    <security-constraint>
            <web-resource-collection>
                <url-pattern>/_ah/spi/*</url-pattern>
            </web-resource-collection>
            <user-data-constraint>
                <transport-guarantee>CONFIDENTIAL</transport-guarantee>
            </user-data-constraint>
        </security-constraint>
    

    然后你的bns适配器将被设置为http前进 . 当我之后添加上面的内容时,我在/_ah/spi/BackendService.getApiConfigs上获得了302个http代码,并且 endpoints 永远不会更新 .

    所以现在我已经恢复在/ _ah / spi上不使用https,我的 endpoints 正在更新 . 我想那些看到他们的 endpoints 没有更新的人会回到他们对/ _ah / spi /上的ssl的第一个配置 .

    偏航 .

相关问题