You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Function SQL Binding:如何将请求体参数传入存储过程

解决方案

要实现SQL Binding动态传递请求体中的caseNo参数,核心是利用Azure Functions的绑定表达式,同时简化请求体的解析流程。以下是修改后的完整实现:

1. 定义请求模型类

确保你的Case类与请求体JSON结构匹配,若字段名不一致可通过JsonProperty映射:

using Newtonsoft.Json;

public class Case
{
    [JsonProperty("caseNo")] // 若JSON字段为caseNo,类属性用驼峰/大驼峰均可,此处做映射
    public string CaseNo { get; set; }
    // 可添加其他需要的属性
}

2. 修改Azure Function代码

namespace FunctionApp1
{
    public static class Function1
    {
        [FunctionName("Function1")]
        // 改为POST方法(GET请求通常不携带请求体),直接绑定Case模型自动完成JSON反序列化
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] Case caseData,
            [Sql(
                "ETL.CaseSearch",
                commandType: System.Data.CommandType.StoredProcedure,
                // 用绑定表达式引用caseData对象的CaseNo属性,动态传递参数
                parameters: "@caseNo={caseData.CaseNo}",
                connectionStringSetting: "SqlConnectionString")] IEnumerable<object> result,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger with SQL Input Binding processed a request.");

            var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(result);
            return new JsonResult(jsonString);
        }
    }
}

关键修改说明

  • 请求体自动解析:将HttpTrigger的输入从HttpRequest改为Case类型,Azure Functions会自动将请求体的JSON反序列化为Case对象,省去手动读流和反序列化的代码。
  • 动态参数绑定:SQL Binding的parameters使用{caseData.CaseNo}绑定表达式,运行时会从函数输入的caseData对象中提取CaseNo值,传递给存储过程的@caseNo参数(替代原硬编码值)。
  • HTTP方法调整:将触发方法从get改为post,符合JSON请求体的常规传输规范。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 07:23:30