首页 文章

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

提问于
浏览
1

我无法在Google文档中找到答案 . 正如我从文档中理解的那样,@ Api注释应用于类以指示它是Endpoint API的一部分,然后@ApiMethod指示该类的哪些方法是Cloud API的一部分 .

但是,即使某个方法未使用@ApiMethod注释,Google App Engine Cloud endpoints 生成器仍将该方法作为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

    我可能错了,但似乎目前你的方法不被包括的唯一方法是在你的 class 中制作 private .

    这是因为:

    • 如果您的方法使用 APIMethod 注释,则包含它

    • 如果您的方法没有使用 APIMethod 进行注释,但它是公共的,那么它也是如此 . 这可能是因为顶部的 API 注释 .

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

相关问题