我们有一个想与Google Endpoints一起使用的AppEngine应用程序。我们需要支持Web客户端和移动客户端,这正是Endpoints对我们有吸引力的原因,因为我们可以轻松生成Android和iOS客户端API。

问题是云端点当前为don't support custom domains,因此我们的Web客户端无法直接与端点通信(移动客户端没有此问题)。

这是我们已经尝试过的方法:

从客户端到appspot.com域的

  • CORS请求。问题在于,因为我们的请求不满足简单CORS的要求(自定义 header ,Cookie等),所以必须随每个请求一起发送预检请求,这会降低
  • 的速度
  • 客户端向我们的自定义域发出请求,而该域又向appspot端点发出请求。同样,额外的请求不利于性能
  • 我们还尝试为Web客户端设置重复的Jersey REST API。我们对所有方法进行两次注释(一次用于Cloud Endpoints,一次用于Jersey),并且Web客户端访问Jersey API,移动客户端访问Endpoints API。除Jersey和Endpoint使用不同的异常(exception)外,这非常有效。因此,如果我们要抛出404 Endpoints异常,那么该异常将使Jersey响应困惑,反之亦然。

  • 还有其他选择吗?我们希望利用Endpoints的功能来生成移动客户端,但还可以避免Web客户端的自定义域限制。

    最佳答案

    Google Cloud Endpoints 2.0现在支持自定义域。如果您使用的是Google Cloud Endpoints 1.0,则可以执行以下操作进行迁移:

  • 更新您的依赖关系以使用新的工件。在Maven中,这看起来
    如下所示:

    com.google.endpoints Endpoints-framework 2.0.0-beta.8
  • 删除旧版依赖项,即appengine-endpoints工件。
  • 更新项目web.xml文件中的API入口点:
  • 将所有出现的SystemServiceServlet重命名为EndpointsServlet。
  • 将所有出现的路径/_ah/spi/*替换为新的所需路径/_ah/api/*

  • 看:

    https://cloud.google.com/appengine/docs/java/endpoints/migrating

    https://code.google.com/p/googleappengine/issues/detail?id=9384

    关于java - Cloud Endpoints自定义域解决方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21707372/

    10-09 04:52