当Endpoints框架停止生成WEB-INF / * .api文件时,如何调试错误?

时间:2013-02-08 11:00:56

标签: java google-app-engine google-cloud-endpoints

在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应提供“按惯例排序规则”的反馈意见。

1 个答案:

答案 0 :(得分:4)

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

  1. 返回类型无效。返回类型必须是符合JavaBean约定的对象,并且不允许使用ObjectStringInteger等类型
  2. 一个或多个参数类型无效。方法最多可以接受POST主体中的一个对象,此对象也应符合JavaBean约定。方法可以通过查询字符串接受零个或多个参数(使用@Named注释),这些参数必须是标量类型(例如StringInteger)。
  3. API,方法或参数的名称无效。应命名API,方法和参数以匹配以下正则表达式:[a-z]+[A-Za-z0-9]*。公约还建议使用lowerCamelCase进行命名(尽管允许alllowercase)。