我在Github(this post)上被一位AWS iOS SDK开发人员引导到link,但恐怕我仍然不明白如何访问传递的Lambda响应,即通过API网关返回。
如果您阅读my iOS SDK usage question on this matter,将会看到我能够通过简单的iOS应用成功调用REST API。 Cloudwatch日志验证Lambda返回的响应正确。但是我不知道如何在result
中访问这些值。
这是调用我的REST API的代码,该代码基于API Gateway文档中的"calc" REST API。
@IBAction func userInvokeApi(_ sender: UIButton) {
print("You clicked invoke api...")
let client = SVTLambdaGateClient.default()
client.calcGet(operand2: "3", _operator: "+", operand1: "5").continueWith{ (task: AWSTask?) -> AnyObject? in
if let error = task?.error {
print("Error occurred: \(error)")
return nil
}
if let result = task?.result {
// Do something with result
print("The raw result is... \(result)")
}
return nil
}
}
是的,我知道我正在做的只是打印result
的地址。我尝试打印值的所有操作均失败!
更新
当我按照以下建议尝试使用result.responseData
时,会收到以下消息:
Value of type 'Empty' has no member 'responseData'
Empty
是指用于Lambda函数传递响应的API网关模型;它不对数据执行任何转换。.只是将其发送到客户端。这是我的Empty.swift
的样子:
import Foundation
import AWSCore
@objcMembers
public class Empty : AWSModel {
public override static func jsonKeyPathsByPropertyKey() -> [AnyHashable : Any]!{
var params:[AnyHashable : Any] = [:]
return params
}
}
有人可以在这里帮助我吗?