在.NET内核中干燥Azure函数应用程序
定义Azure函数应用程序我有许多几乎相同的函数:在.NET内核中干燥Azure函数应用程序,.net,.net-core,azure-functions,.net,.net Core,Azure Functions,定义Azure函数应用程序我有许多几乎相同的函数: public static class FunctionA { [FunctionName("function_a")] public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")]HttpRequest request, ILogger logger) { //.
public static class FunctionA
{
[FunctionName("function_a")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")]HttpRequest request, ILogger logger)
{
//... Authentication, etc
return result = ServiceA.Do(request);
}
}
public static class FunctionB
{
[FunctionName("function_b")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")]HttpRequest request, ILogger logger)
{
//... Authentication, etc
return result = ServiceB.Do(request);
}
}
//...
有没有办法找到这个密码
理想情况下,我希望使用泛型继承,但我不能,因为静态类只能从对象继承。我想到的一个想法是使用路由。您基本上只需要定义一个外部HTTP触发函数,并根据路由属性在其中切换。大概是这样的:
[FunctionName("function_external")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "service/{service}")]HttpRequest request, string service, ILogger logger)
{
//... Authentication, etc
// Depending on how many cases you have, you probably want some smarter lookup here
switch(service)
{
case "a": return ServiceA.Do(request);
//...
}
}
这不是一个完美的通用解决方案,但至少是您现在可以轻松实现的解决方案。您可以使用or进行路由 如果您使用的是azure function v2,则功能不必是静态的。