使用API Gateway,我为Java和Android创建了一个API和两个SDK . API包含一个POST方法,该方法有两个查询字符串,“name”和“device”,在方法请求中定义 . 集成请求使用lambda代理集成将方法传递给Lambda函数 .

SDK以不同方式将查询字符串传递给Lambda请求:

来自Java SDK的Lambda请求:

{
    "queryStringParameters": {
        "name": "name_1",
        "device": "device_1"
    },
    "body": null,
}

来自Android SDK的Lambda请求:

{
    "queryStringParameters": null,
    "body": "device=device_1&name=name_1",
}

Java SDK将查询字符串放在“queryStringParameters”中,正如预期的那样,而Android SDK将查询字符串放在“body”中 . 为什么?

根据'Robert'的要求编辑:

以下代码用于从Java发出请求:

Client client = Client.builder().build();
PostDeviceRequest postDeviceRequest = new PostDeviceRequest();
postDeviceRequest.setDevice("device_1");
postDeviceRequest.setName("name_1");
client.postDevice(postDeviceRequest);

以下代码用于从Android发出请求:

ApiClientFactory factory = new ApiClientFactory();
Client client = factory.build(Client.class);
client.devicePost("device_1", "name_1");

请注意,如果是GET方法,Android SDK会将查询字符串放在“queryStringParameters”中,如预期的那样 .