当前位置: 首页 > 面试题库 >

Cloud Endpoint参数不应命名

孟德曜
2023-03-14
问题内容

我想将HashMap<String, String>JS应用程序发送到我的Google
App。我创建了一个HashMapContainer类,例如:Cloud Endpoints CollectionParameter

Endpoint方法的定义如下:

public Entity myMethod(
        @Named('param1') String param1, 
        @Nullable @Named('param2') HashMapContainer param2) {
    //...
}

当我运行API生成时,会发生此错误:

com.google.api.server.spi.config.validation.ApiConfigInvalidException: 
    Resource type 'class com.mason.server.entity.HashMapContainer' 
    in method 'endpoint.myMethod' should not be named.

因此,我删除了@Named注释。该API已生成,但显然我没有收到JS应用程序发送的参数。我的JavaScript是这样的:

function doTransaction() {
    var req = gapi.client.myApi.endpoint.myMethod({
        'param1': 'FOO',
        'param2': {
            'value1':'foofoo',
            'value2':'barbar',
            'value3':'foobar'
        }
    });
    req.execute(function(data) {
        console.log(data);
    });
}

param2如果不允许使用@Named批注,该如何获取?
也许我的JavaScript错误?


问题答案:

Google Cloud Enpoints
文档说:

@Named: 此注释指示在此处注入的请求中的参数名称。未使用@Named注释的参数将与整个请求对象一起注入。

据我了解,基本上,当您添加@Named注释时,参数将包含在请求URL的末尾:

http://end_point_url?parameter1=xxx&parameter2=yyy

显然,支持@Named批注的参数类型只有少数几种(我认为是int,long,String,Boolean和它们对应的数组),因为您不能将整个哈希图附加到请求URL!

另一方面,如果您不使用@Named,则该参数将包含在POST数据中( 注入 )。

为了使用适用于JavaScript的Google API客户端库在HTTP正文中发送参数,您只需要将该参数包含resource在JSON-
RPC请求内部称为的对象中,如下所示:

var req = gapi.client.myApi.endpoint.myMethod({
    'param1': 'FOO',
    'resource': {
        'param2': {
            'value1':'foofoo',
            'value2':'barbar',
            'value3':'foobar'
        }
    }
});

API客户端将自动param1在URL和param2POST数据中发送…

Google JavaScript客户端库JavaScript文档的
本部分对此 进行了详细说明。



 类似资料:
  • 我有以下查询: 执行查询时,我得到以下异常: java.lang.非法参数异常: 组织.Hibernate.查询参数异常: 找不到命名参数 [startDate] 您能告诉我的查询有什么问题吗?

  • 我的项目设置是Spring MVC,Hibernate 3.2.x,在 MySQL 数据库上 收到以下错误: org.hibernate.QueryParameterException:无法找到命名参数电子邮件 方法#1: 方法#2: 错误: java.lang.IllegalArgumentException:参数email不作为命名参数存在于[fromcom.cmgr.beans.UserAc

  • 我在使用google Guice获取google cloudendpoint时遇到了麻烦。从endpoints库中可用的类看来,这应该是可能的,但我不清楚如何连接它,也没有看到任何文档。

  • 本文向大家介绍Lua 命名参数,包括了Lua 命名参数的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 在代码中我发现: 类雇员不是我们的类,可能从wsdl文件生成,其中参数(年龄和地点)被称为,,所以有人试图命名null参数以知道哪个是哪个,但这是好的做法吗?另一个问题是,和被翻译,而其他两个参数只是,但除此之外,创建带有值的变量只是为了将其传递到构造函数的下一行,可以吗?

  • 请找到我使用过的代码。以下HQL查询失败,说明: 找不到命名参数 [模板 Id] 但是模板 Id 存在于我的模型类中。 请帮助解决问题或可能导致此类错误的原因: 模型文件 请帮助解决我的问题