代码之家  ›  专栏  ›  技术社区  ›  Dejan

使用param object[]作为parametar的Web api调用

  •  0
  • Dejan  · 技术社区  · 7 年前

    可以用params object[]作为参数调用api吗

        [HttpGet("{procName}/{parametarList}")]
        public ActionResult<string> Get(string procName , params object[] parametarList)
        {
            string JSONString = string.Empty;
    
            using (var ado = new ADO())
            {
    
                var ds = ado.ExecuteAndReturnDS("execute " + procName " @0, @1, @2,@3,@4,@5", parametarList);
    
                JSONString = JsonConvert.SerializeObject(ds.Tables[0]);
    
                return new JsonResult(JSONString);
    
            }
        }
    
     public DataSet ExecuteAndReturnDS(string upit, params object[] parametri)
        {
            try
            {
                _Conn();
    
                command = new SqlCommand(upit, _Conn);
    
                command.CommandTimeout = 200;
    
                _ds = new DataSet();
                _sqlda = new SqlDataAdapter(command);
    
                for (int i = 0; i <= parametri.Count() - 1; i++)
                {
                    if (parametri[i] == null)
                    {
                        command.Parameters.AddWithValue("@" + i, DBNull.Value);
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@" + i, parametri[i]);
                    }
                }
    
                _sqlda.Fill(_ds);
    
                if (_Conn.State == ConnectionState.Open)
                {
                    _sqlda.Dispose();
    
                    _Conn.Dispose();
                    _Conn.Close();
                }
    
                return _ds;
            }
            catch (Exception ex)
            {
                return null;
            }
        }
    

    这样地 /api/values/myProcedure/param1/param2/param3/param4/等/

    0 回复  |  直到 7 年前
        1
  •  0
  •   Doh09    7 年前

    我可以看到两种方法。

    第一个 一种方法是将parameterlist作为字符串传入,然后将其拆分为方法中的对象数组。

    下面是一个如何在C#中轻松拆分字符串的示例: https://docs.microsoft.com/en-us/dotnet/csharp/how-to/parse-strings-using-split

    就是使用POST请求而不是GET请求,这将允许您传入更复杂的对象。