3

给定 Eclipse 中的 Google Cloud Endpoints 项目,其中 servlet-class 使用 注释,Endpoints 框架会在项目编译成功时@Api(name="helloworld")生成一个名为的文件。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 应提供 Code-By-Convention-Rule-Breaking 反馈。

4

1 回答 1

4

当代码生成失败时,目前没有良好的日志记录或错误消息,尽管它是(如果不是大多数)请求的功能之一。在此期间,这里列出了常见的失败案例:

  1. 返回类型无效。返回类型必须是符合 JavaBean 约定的对象,并且不允许使用 、 和ObjectString类型Integer
  2. 一种或多种参数类型无效。方法在POST主体中最多可以接受一个对象,并且该对象也应该符合 JavaBean 约定。方法可以通过查询字符串(使用@Named注释)接受零个或多个参数,并且这些参数必须是标量类型(例如String, Integer)。
  3. API、方法或参数的名称无效。API、方法和参数的命名应与以下正则表达式匹配:[a-z]+[A-Za-z0-9]*. 约定还建议使用lowerCamelCase命名(虽然alllowercase是允许的)。
于 2013-02-19T19:34:23.507 回答