在 Eclipse 中给定一个带有 @Api(name="helloworld")
注释的 servlet 类的 Google Cloud Endpoints 项目,Endpoints 框架生成一个名为 war/WEB-INF 的文件/helloworld-v1.api
当项目编译成功时。有时即使没有编译错误,也不会生成此文件 - 只有我称之为“GAE 端点代码约定错误”。
示例 - 工作:
public class TestEntity {
public String Text;
public TestEntity(String text){
Text = text;
}
}
@ApiMethod
public TestEntity getTestEntity(){
return new TestEntity("Hello world");
}
示例 - 不工作:
// The TestEntity-class is unchanged
@ApiMethod
public TestEntity getTestEntity(String input){
return new TestEntity("Hello world");
}
后一个示例的问题是我将一个 String 参数作为输入,而没有用 @Named
对其进行注释。我知道在这个例子中,但在其他情况下这可能不是很明显。
是否可以在任何地方读取关于为什么未生成 .api 文件的某种错误日志?
虽然按照惯例我是代码爱好者,但如果我做错了什么得不到反馈,那编程效率确实会倒退一步。 Eclipse 提供编译器错误反馈。 Google Cloud Endpoints Framework 应提供违反约定规则的代码反馈。
最佳答案
当代码生成失败时,目前没有良好的日志记录或错误消息,尽管它是(如果不是大多数)请求的功能之一。在此期间,这里列出了常见的失败案例:
- 返回类型无效。返回类型必须是符合JavaBean约定的对象,
Object
、String
、等类型>整数
是不允许的。 - 一个或多个参数类型无效。方法在
POST
主体中最多可以接受一个对象,并且该对象也应符合JavaBean 约定。方法可以通过查询字符串(使用@Named
注释)接受零个或多个参数,并且这些参数必须是标量类型(例如String
、Integer
). - API、方法或参数的名称无效。API、方法和参数的命名应与以下正则表达式匹配:
[a-z]+[A-Za- z0-9]*
。约定还建议使用lowerCamelCase
进行命名(尽管允许使用alllowercase
)。
关于java - 当 Endpoints 框架停止生成 WEB-INF/*.api 文件时,我该如何调试错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14771081/