使用可选参数调用ApiMethod时出错

时间:2015-11-06 05:00:30

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

我创建了一个ApiMethod,并将一些参数标记为@Nullable。从我的客户端网页,当我提出请求时,它抛出以下错误。当我测试样本(Greetings.java)时它工作得很好。但不是我的API。我缺少什么想法?

{
  "error" : {
    "message" : "java.lang.IllegalArgumentException",
    "code" : 400,
    "errors" : [ {
      "domain" : "global",
      "reason" : "badRequest",
      "message" : "java.lang.IllegalArgumentException"
    } ]
  }
}

这是我的代码示例:

import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.config.ApiMethod;
import com.google.api.server.spi.config.Named;
import com.google.api.server.spi.config.Nullable;

@ApiMethod(name = "adddetails", path = "admin/adddetails")
public Details addDetails(
        @Named("date") long date,
        @Named("hours") int hours,
        @Named("weekend") @Nullable boolean weekend,
        @Named("holiday") @Nullable boolean holiday

在我的网页内(html页面)

var request = api.adddetails({
            "date": date.getTime(),
            "hours": 0
        });
        request.execute();

如果我跑到线下面那么ApiMethod被调用没有任何错误:

    var request = api.adddetails({
            "date": date.getTime(),
            "hours": 0,
            "weekend": row.weekend,
            "holiday": row.holiday
        });
        request.execute();

我已经检查了myapi.api文件,里面显示的参数为"required" : false,这意味着我收到了正确的api到客户端。但不确定哪里出错了。

我在localhost上测试。

1 个答案:

答案 0 :(得分:1)

对标记为Boolean的参数使用boolean,而不是Nullable。将原语用于原语时可能会有警告,当然,它不能为空。