我在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 {
}
感谢。
答案 0 :(得分:0)
我可能错了,但似乎目前您的方法不能包含的唯一方法是在您的班级中设置private
。
这是因为:
APIMethod
进行注释,则会包含APIMethod
进行注释,但它是公开的,那么它也会被采用。这可能是因为顶部有API
注释。 提出了一个问题:https://code.google.com/p/googleappengine/issues/detail?id=10372&thanks=10372&ts=1386300958