【问题标题】:Implications of separating Http Request-triggered Azure Functions by http verb通过 http 动词分离 Http 请求触发的 Azure Functions 的含义
【发布时间】:2020-09-09 23:02:23
【问题描述】:

我仍在尝试了解 Azure Functions 和最佳实践,但据我了解,有两种方法可以通过 http 动词(GET、POST 等)分隔逻辑。是否有更喜欢以下两种方法中的任何一种的标准或最佳实践?更重要的是,假设底层逻辑保持不变,这两种方法在 Azure 中运行时是否存在成本差异?

方法一:

    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req)
        {
            if (req.Method == HttpMethods.Get)
            {
                // do stuff here
            }

            else if (req.Method == HttpMethods.Post)
            {
                // do stuff here
            }
        }
    }

方法B:

    public static class GetFunction
    {
        [FunctionName("GetFunction")]
        public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req)
        {
            // do stuff here
        }
    }

    public static class PostFunction
    {
        [FunctionName("PostFunction")]
        public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req)
        {
            // do stuff here
        }
    }

【问题讨论】:

    标签: azure .net-core azure-functions azure-function-app azure-functions-core-tools


    【解决方案1】:

    您曾询问是否有使用 GET 或 POST 的标准或最佳实践。通常,在 REST 世界中,如果要获取资源,则使用 GET,而在要创建新资源时使用 POST。因此,它基本上取决于您尝试使用该函数实现的目标。在这里找到类似的问题 > https://stackoverflow.com/a/504993/5344880When do you use POST and when do you use GET?

    关于定价,它基于执行次数和内存,而不是逻辑。此链接将提供更多详细信息https://azure.microsoft.com/en-in/pricing/details/functions/ 请注意 Azure Functions 有 10 分钟的硬超时

    希望这会有所帮助。

    【讨论】:

    • 感谢您的回复,但我熟悉 RESTful API;我更想问如何在 Azure Functions 世界中分离逻辑。我询问定价影响是因为我不确定一种方法是否会比另一种方法使用更多的计算资源。
    【解决方案2】:

    简而言之,您的定价问题的答案是,两者的 IT 将是相同的。它将等于您的逻辑运行的时间。您应该使用消费计划。如果您正在寻找节省成本的方法。微软说 " Azure Functions 消耗计划根据每秒的资源消耗和执行次数计费。消费计划定价包括每个订阅每月免费授予 100 万个请求和 400,000 GB-s 的资源消耗,该订阅中所有功能应用程序的即用即付定价。” 这是更多详细信息的链接。 https://azure.microsoft.com/en-us/pricing/details/functions/ 至于你的第二个问题。 IMO 你应该使用单独的函数来获取和发布。通过这种方式,您可以分离端点并以不同的方式处理两个调用。但是这种打破了 RESTful API 的做法。所以它的给予和接受。 :)

    【讨论】:

      猜你喜欢
      • 2019-08-21
      • 2013-01-15
      • 2016-07-23
      • 2021-09-23
      • 1970-01-01
      • 2019-03-18
      • 2022-06-28
      • 2011-09-28
      • 1970-01-01
      相关资源
      最近更新 更多