C# 如果string类型的函数还需要对象类型param,如何在该函数中传递参数?
我有一个函数处理程序C# 如果string类型的函数还需要对象类型param,如何在该函数中传递参数?,c#,json,amazon-web-services,aws-lambda,aws-serverless,C#,Json,Amazon Web Services,Aws Lambda,Aws Serverless,我有一个函数处理程序 namespace AWSLambda2 { public class input { public string name { get; set; } public string email { get; set; } } public class Function { public string FunctionHandler(string data, input input)
namespace AWSLambda2
{
public class input
{
public string name { get; set; }
public string email { get; set; }
}
public class Function
{
public string FunctionHandler(string data, input input)
{
return input.name?.ToUpper()+", "+input.email?.ToUpper()+", "+data;
}
}
}
它接受字符串类型param和对象类型的输入。好的
对于对象类型,我可以传递:
{
"name":"test",
"email": "test@gmail.com"
}
但它抛出了一个错误,因为我也必须传递数据参数。如何在使用POSTMAN或Swagger为POST请求传递JSON负载时传递该数据。为什么不能使用DTO来保存以下两种数据,并让处理程序接受该类型
公共字符串函数处理程序(MyModel model)
我明白了,然后通过查询字符串传递额外的数据,并像这样定义Api处理程序
public string FunctionHandler([FromQuery]string data, [FromBody]input input)
据
将Lambda函数处理程序定义为实例或静态方法
在课堂上。如果希望访问Lambda上下文对象,则
通过定义ILambdaContext类型的方法参数
接口,您可以使用该接口访问有关当前
执行,例如当前函数的名称、内存限制、,
剩余执行时间和日志记录
returnType handler-name(inputType input, ILambdaContext context) {
...
}
在语法中,请注意以下内容:
–第一个处理程序参数是处理程序的输入, 可以是事件数据(由事件源发布)或自定义输入 您提供的,例如字符串或任何自定义数据对象inputType
–如果您计划同步调用Lambda函数 (使用RequestResponse调用类型),可以返回输出 使用任何受支持的数据类型创建函数的。例如 如果将Lambda函数用作移动应用程序后端,则 同步调用它。您的输出数据类型将被序列化 转换为JSON。returnType
如果计划异步调用Lambda函数(使用 事件调用类型),返回类型应为void。例如,如果 将AWS Lambda与事件源(如Amazon S3或Amazon SNS)一起使用, 这些事件源使用事件调用Lambda函数 调用类型
- Handler–Handler是AWS Lambda调用的函数,用于开始执行Lambda函数。在创建Lambda函数时标识处理程序。当调用Lambda函数时,AWS Lambda通过调用handler函数开始执行代码AWS Lambda将任何事件数据作为第一个参数传递到此处理程序。处理程序应该处理传入的事件数据,并可以调用代码中的任何其他函数/方法
- 上下文对象及其在运行时如何与Lambda交互–AWS Lambda还将上下文对象作为第二个参数传递给处理程序函数。通过此上下文对象,您的代码可以与AWS Lambda交互。例如,您的代码可以找到AWS Lambda终止Lambda函数之前剩余的执行时间。
此外,对于Node.js等语言,还有一个使用回调的异步平台。AWS Lambda为此上下文对象提供了其他方法。您可以使用这些上下文对象方法来通知AWS Lambda终止Lambda函数,并可以选择向调用者返回值
public class SampleClass {
public string data { get; set; }
public Input input { get; set; }
}
并将其用于函数输入
namespace AWSLambda2 {
public class Input {
public string name { get; set; }
public string email { get; set; }
}
public class Function {
public string FunctionHandler(SampleClass input) {
var data = input.data;
var user = input.input;
return user.name?.ToUpper()+", "+user.email?.ToUpper()+", "+data;
}
}
}
与提供的样本中显示的类似
您在哪里使用了
上下文
参数?不,在哪里,默认情况下,lambda函数会使用该参数。。。如果不需要,则不需要传递。公共类输入
应该是公共类输入
类是capitalised@Matt:谢谢,但这不是问题所在。请阅读问题。这是问题之一,可能不是问题。谢谢,是的,我很累,但我正在用另一种方法测试它,就像我在问题中描述的那样。你不能在lambda函数中这样做,只能在webapi中这样做
namespace AWSLambda2 {
public class Input {
public string name { get; set; }
public string email { get; set; }
}
public class Function {
public string FunctionHandler(SampleClass input) {
var data = input.data;
var user = input.input;
return user.name?.ToUpper()+", "+user.email?.ToUpper()+", "+data;
}
}
}