如何将参数发布到正文并获取列表中的对象? IO能够在我的控制器中使用此post方法检索数据,并将参数附加到URI
帐户管理员:
[HttpPost]
[ActionName("mini")]
public List<MiniStatement> GetMiniStatement(string accountNumber)
{
var miniState = BusinessLayer.Api.AccountHolderApi.GetMiniStatement(accountNumber);
return miniState.ToList();
}
但是如何传递参数[FromBody]
并检索列表中的数据?
MiniStatement类:
public class MiniStatement
{
public string AccountNumber { get; set; }
public string TranDate { get; set; }
public string Trans { get; set; }
public decimal Amount { get; set; }
}
数据库层中的 GetMiniStatement
方法:
public static List<MiniStatement> GetMiniStatement(string accountNumber)
{
List<MiniStatement> resultList = new List<MiniStatement>();
using (var conn = new NpgsqlConnection("Server=localhost;UserId = postgres; " + "Password = pes; Database = pmc;"))
{
conn.Open();
using (var command = new NpgsqlCommand("SELECT * FROM sms.dep_mini_statement(@AccountNumber);", conn))
{
command.Parameters.AddWithValue("@AccountNumber", accountNumber);
using (var dr = command.ExecuteReader())
{
while (dr.Read())
{
var result = new MiniStatement
{
AccountNumber = accountNumber,
TranDate = (string)dr[0],
Trans = (string)dr[1],
Amount = (decimal)dr[2]
};
resultList.Add(result);
}
}
}
}
return resultList;
}
路线
config.Routes.MapHttpRoute("MobileBankingApi", "v1/{controller}/{action}");
答案 0 :(得分:1)
如果您将数据发布为json,则可以将对象中的AccountNumber填充为
{ "AccountNumber": "23" }
然后在控制器方法中添加[FromBody]作为此
[HttpPost]
[ActionName("mini")]
public List<MiniStatement> GetMiniStatement([FromBody] MiniStatement state)
{
var miniState = BusinessLayer.Api.AccountHolderApi.GetMiniStatement(state.AccountNumber);
return miniState;
}
此外,由于BusinessLayer.Api.AccountHolderApi.GetMiniStatement()返回一个列表,您可以按原样传递响应
答案 1 :(得分:1)
所以基本上你可以做到以下几点。
在api中创建一个模型类。
public class Account
{
string AccountNumber{get;set;}
}
然后在你的webapi方法中使用它。
[HttpPost]
[ActionName("mini")]
public IActionResult GetMiniStatement([FromBody]Account account)
{
var miniState = BusinessLayer.Api.AccountHolderApi.GetMiniStatement(account.AccountNumber);
return new ObjectResult(miniState.ToList());
}
您的请求正文应如下所示。
{
"AccountNumber":"someNUmber"
}
如果有帮助,请告诉我。