【问题标题】:Where are Google App Engine's Cloud Endpoints?Google App Engine Cloud Endpoints 在哪里?
【发布时间】:2014-10-13 16:38:47
【问题描述】:

我正在开发一个使用 Google App Engine 远程存储应用程序数据的项目。到目前为止,我已经创建了一个简单的类 GenericEntity 并使用 Google 的工具生成了一个支持 Cloud Endpoint。

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class GenericEntity {

/* Define the UniqueID as persistent and unique. Allow JDO to assign the value of UniqueId when uploaded with a null id. */
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@GeneratedValue(strategy = GenerationType.AUTO)
private Long mUniqueId; // Value must be 'Long' and not a primitive 'long'!

@Persistent
private String mData;
[...]

我还可以使用 API Explorer 在GenericEntityEndpoint 中成功创建和删除GenericEntity 的实例。

请求:

POST 

Content-Type:  application/json
X-JavaScript-User-Agent:  Google APIs Explorer

{
"data": "hello SO!"
}

回复:

200 OK

问题是我想从本地桌面应用程序控制这些端点,但我对应该如何完成感到困惑。我想PersistenceManagerFactory 仅对 Google 的服务器是本地的,随后我的应用程序无法直接访问。我是否缺少最后一步,允许通过网络与这些生成的端点进行高级交互,还是我需要使用HttpUrlRequest 函数实现我自己的与服务器的接口?

【问题讨论】:

    标签: java api google-app-engine cloud endpoint


    【解决方案1】:

    云端点使用 REST 或 RPC over HTTP 发送 JSON 数据,并且使用 OAuth2 管理身份验证,因此您可以从头开始编写桌面应用程序,也可以使用各种 Google 库连接到您的端点。对于 Java 应用程序,我通常使用您可以使用 endpoint.sh 生成的 Android 云端点库,我使用为 Android 生成的类从任何其他 Java 应用程序调用云端点:

    appengine-java-sdk-x.x.x/bin/endpoints.sh <command> <options> [class-name]
    

    更多详情请点击此处 (https://cloud.google.com/appengine/docs/java/endpoints/endpoints_tool)

    一旦源 jar 由 endpoint.sh 生成,我通常会将其扩展到我的客户端 Java 项目中。否则,您可以编译生成的类并将它们捆绑为二进制 jar。完成此操作后,您需要处理身份验证部分。这可以通过使用 OAuth2 Java 客户端库 (https://developers.google.com/api-client-library/java/apis/oauth2/v1) 来完成,请参见提供的示例 oauth2-cmdline-sample

    一旦您拥有从桌面应用程序调用云端点的 OAuth2 令牌,就与调用任何其他 Google API 没有什么不同,服务对象和构建器模式都是相同的,例如根据您的端点 API 的名称,您可以从 endpoint.sh 生成的类中创建一个服务对象,如下所示

    Endpoint endpoint = Endpoint.Builder(
                            HTTP_TRANSPORT, JSON_FACTORY, getCredential()).build();
    

    【讨论】:

    • 感谢您提供非常详细和翔实的回答。我将为 Eclipse 安装 Android 设备工具 (ADT) 插件及其依赖项,希望这将允许我按照您的建议在现有项目中生成客户端 API。
    • 不客气。如果您不是为 Android 开发,则不需要安装 ADT,命令行工具 endpoint.sh 会生成可以在任何 Java 应用程序中使用的 Java 类,因此您可以在普通 Eclipse 中使用这些文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    相关资源
    最近更新 更多