在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应提供“按惯例排序规则”的反馈意见。
答案 0 :(得分:4)
当代码生成失败时,目前没有良好的日志记录或错误消息,尽管它是(如果不是大多数)请求的功能之一。在此期间,这里列出了常见的失败案例:
Object
,String
和Integer
等类型POST
主体中的一个对象,此对象也应符合JavaBean约定。方法可以通过查询字符串接受零个或多个参数(使用@Named
注释),这些参数必须是标量类型(例如String
,Integer
)。[a-z]+[A-Za-z0-9]*
。公约还建议使用lowerCamelCase
进行命名(尽管允许alllowercase
)。