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

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

关于java - 当 Endpoints 框架停止生成 WEB-INF/*.api 文件时,我该如何调试错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14771081/

相关文章:

java - Google Eclipse 插件在 Google Cloud Endpoints 中的方法干扰

java - 测试非默认的 App Engine cron 作业

java类路径找不到符号

java - Nashorn 中新的 Java 字符串数组

java - 应用程序用户身份验证java mongodb模块

java - 为什么我在 try catch JSP 输出时无法包装 ServletRequest

google-app-engine - 如何在 Go 中的 App Engine 上为 OAuth2 使用客户端 ID?

mysql - 在 Google App Engine 开发环境中使用 JPA 时,非 Ascii 字符保存为 '?'

oauth-2.0 - 将 Google Cloud Endpoints 作为 iOS 应用程序进行身份验证(不是具有 Google 帐户凭据的用户)

java - Miglayout 网格约束自定义布局