Google Cloud Endpoints(使用GAE Java,Eclipse) - 包含哪些类的方法?

时间:2014-01-09 07:34:28

标签: java eclipse google-app-engine google-cloud-endpoints

我在Google文档中找不到答案。据我从文档中了解,@ Api注释应用于类以指示它是Endpoint API的一部分,然后@ApiMethod指示该类的哪些方法是Cloud API的一部分。

但是,即使某个方法未使用@ApiMethod注释,Google App Engine Cloud Endpoints Builder仍会将该方法作为Cloud API的一部分包含在内。

如何从API中排除方法?如果不可能,那么将接收到的API参数传递给包含所需方法的单独对象(带注释类的字段)是一个不错的选择吗?

我包含以下代码,这是一个用@Api注释的类以便澄清(请参阅ggetStr方法顶部的注释):

package com.barcodeapp.www.app;

import java.util.ArrayList;
import java.util.List;

import com.google.api.server.spi.config.Api;

@Api(
    name = "cetest",
    version = "v1",
    scopes = {EndpointsConstants.EMAIL_SCOPE},
    clientIds = {EndpointsConstants.WEB_CLIENT_ID, EndpointsConstants.ANDROID_CLIENT_ID, com.google.api.server.spi.Constant.API_EXPLORER_CLIENT_ID},
    audiences = {EndpointsConstants.ANDROID_AUDIENCE}
)
public class CloudTest  {

   public List<String> list() {
        List<String> strs = new ArrayList<String>();
        strs.add("a"); strs.add("b");
        return strs;
   }

   /* THE FOLLOWING METHOD NEEDS TO BE EXCLUDED FROM CLOUD API */
   public String ggetStr() {
       return "abc";
   }

}

编辑:我已将库.jar文件包含在WAR / WEB-INF / lib文件夹中 - 没有区别。

以下是完整性的两个类:

package com.cloudtest.lib;

public class ClassInLibProj {

}

package com.cloudtest.my;

public class ClassInLocalProj {

}

感谢。

1 个答案:

答案 0 :(得分:0)

我可能错了,但似乎目前您的方法不能包含的唯一方法是在您的班级中设置private

这是因为:

  • 如果您的方法使用APIMethod进行注释,则会包含
  • 如果您的方法未使用APIMethod进行注释,但它是公开的,那么它也会被采用。这可能是因为顶部有API注释。

提出了一个问题:https://code.google.com/p/googleappengine/issues/detail?id=10372&thanks=10372&ts=1386300958