Javascript 用于传输命名参数的云端点资源属性&;身体不工作

Javascript 用于传输命名参数的云端点资源属性&;身体不工作,javascript,google-app-engine,google-cloud-endpoints,Javascript,Google App Engine,Google Cloud Endpoints,我试图通过gapi.client rpc调用实现对google云端点的调用。如文档(和)中所述,应该可以包括命名参数和对象体: @ApiMethod(name = "staff.insert", httpMethod="post") public Staff insertStaff(@Named("token") String token, Staff staff) throws ConflictException, NotFoundException, InternalServerEr

我试图通过gapi.client rpc调用实现对google云端点的调用。如文档(和)中所述,应该可以包括命名参数和对象体:

@ApiMethod(name = "staff.insert", httpMethod="post")
    public Staff insertStaff(@Named("token") String token, Staff staff) throws ConflictException, NotFoundException, InternalServerErrorException {
应该可以通过

var staff = {};
           staff.id = environment.getStaffId();
           staff.name = "Johnny";
           staff.createdAt = new Date();
           staff.modifiedAt = new Date();

           var par = { 'token' : "mytoken", 'resource' : staff};

           api.staff.insert(par).execute(function(res) {

           });
我无法实现这一点,我总是在java端点中得到一个空的staff对象,但得到一个正确的令牌。这在devenv(1.8.8)和appengine上都有。客户端版本是1.1.0-beta

当通过api资源管理器(使用rest而不是rpc)和android生成的端点库(也使用json rest)使用时,端点可以正常工作,传输正确的人员

在chrome调试器中转储rpc请求表明存在一个包含资源字典和令牌参数的参数字典,看起来资源属性不是由gapi.client专门处理的。应该是这样的吗?端点代码对“资源”参数有特殊的处理程序?或者这是gapi的问题

在gapi.client模糊化源上使用chrome调试器,并在我能找到的唯一出现的“resource”字符串上设置断点,该断点永远不会命中。我是否在格式化参数/正文时出错?有什么想法吗?或者我可以澄清关于我的设置的问题


(我也在gapi.client讨论组上发布了这个问题,但不清楚问题是在gapi还是在端点中)

没有任何意义,但请尝试以下方法:

var date = new Date();
var par = {
    'token': 'mytoken',
    'id': environment.getStaffId(),
    'name': "Johnny",
    'createdAt': date,
    'modifiedAt': date
}

我过去有过。是的,我同意这是一个bug。也给我带来了巨大的痛苦

因此,我想解决方法是创建一个组合对象,将所有命名和未命名参数传递给api。而不是硬编码。。快速循环可能更好

var param = {};
param["token"] = "mytoken";
for (var prop in staff) {
  param[prop] = staff[prop];
}
api.staff.insert(param).execute(function(res) {
       }); 

如果您真的愿意,将参数/对象混合在一起可以成为一个灵活的函数。。但这是我认为有缺陷的创可贴。谢谢你的建议。但是,如果这真的是唯一可行的方法,那么不知何故,整个要点就失去了(正如你在另一篇文章中提到的)。这只是端点中的一个bug吗?它一定是个bug。我希望我的问题能得到官方的回应。你能检查一下这个代码对你有用吗?这样我就知道我不是唯一一个这样的人了?如果它对您有效,我将提交一个bug。是的,当然,如果存在a)仅命名参数或b)仅一个对象,则它有效。否,根据上述答案,您不需要更改cloud endpoints方法中参数的结构方式;它仍然应该是
public Staff insertStaff(@Named(“token”)String-token,Staff-Staff)
,但是gapi请求的结构需要如上所述。肯定是后者。刚刚意识到它仍然存在,这对谷歌来说并不重要。我提交了一份