哪些类型允许作为C#编写的Azure函数应用程序的参数,这些应用程序只能通过管理端点调用?
我读过很多文档和源代码,但我仍然不知道答案。我正在寻找明确的引用和关于这意味着什么和为什么的明确解释,以及如何用其他参数类型实现函数的例子。
我想知道Azure团队是否希望您接受一串JSON并自己将其解析为适当的类型,但是我找到的文档没有说明。
附加上下文
我正在处理的特定功能只能通过管理界面调用,因此没有任何Http绑定。
[NoAutomaticTrigger]
[FunctionName(nameof(SomeFunctionName))]
public async Task SomeFunctionName(ParameterTypeHere someParameterName)
{
...我能用什么代替ParameterTypeHere
我的具体用法(这次)是,我想传递类似List<Guid>或Guid[]之类的东西,我不介意必须将它包装在类或其他什么东西中,但是没有什么效果,所以我最终在逗号上拆分了一个字符串,并解析出了guids,这似乎是一个糟糕的解决方案。
目前,我有一个字符串参数,并使用以下方法调用它:
$ curl -v http://localhost:7071/admin/functions/SomeFunctionName \
-d '{"input": "699F3073-9BFD-4DA7-9E61-4E6564D032EC,197DA362-C281-4E0F-BB92-8759F7A5B4B4"}' \
-H "Content-Type:application/json"目前为止的研究
我已经看过的东西让我仍然不确定除了string之外,还有什么可以用于更复杂的输入:
参数名将被忽略,您必须传递它的名称"input“,而不管实际的参数名称是什么。只是另一件事要绊倒。
更多的上下文
如果你想知道为什么你会想要一个只管理的功能,这是一个一次性的工作,由其他人谁可以访问管理端点运行。这似乎是最简单的事情,可以发挥作用。一个HttpTrigger应该是好的,它似乎违反了YAGNI。
发布于 2021-01-11 15:56:48
几周前,我测试了如何使用函数转换API,特别注意DI (下面的示例中没有显示)和验证。这可能不是对您的问题的直接回答,但它表明可以使用普通的模型类。
public class MyRequestModel
{
[Display(Name = "Message")]
[Required, MinLength(3)]
public string Message { get; set; }
}
public static class MyHttpExample
{
[FunctionName(nameof(MyHttpExample))]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "test/{message}")] MyRequestModel req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
var validationResults = new List<ValidationResult>();
if (!Validator.TryValidateObject(req, new ValidationContext(req, null, null), validationResults, true))
{
return new BadRequestObjectResult(validationResults);
}
var responseMessage = $"Hello, {req.Message}. This HTTP triggered function executed successfully.";
return new OkObjectResult(responseMessage);
}
}有关Azure函数绑定表达式模式 https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-expressions-patterns的更多信息
在阅读上面的文档时,请记住,function.json是在使用C#时从注释中生成的,但是doc显示了可用的内容。为上述示例生成的function.json:
{
"generatedBy": "Microsoft.NET.Sdk.Functions-3.0.11",
"configurationSource": "attributes",
"bindings": [
{
"type": "httpTrigger",
"route": "test",
"methods": [
"get"
],
"authLevel": "function",
"name": "req"
}
],
"disabled": false,
"scriptFile": "../bin/MyFunctions.dll",
"entryPoint": "MyFunctions.MyHttpExample.Run"
}https://stackoverflow.com/questions/65669323
复制相似问题