Javascript 用于传输命名参数的云端点资源属性&;身体不工作
我试图通过gapi.client rpc调用实现对google云端点的调用。如文档(和)中所述,应该可以包括命名参数和对象体: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
@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请求的结构需要如上所述。肯定是后者。刚刚意识到它仍然存在,这对谷歌来说并不重要。我提交了一份