[英]Return JSON as a response for HTTP Get in ASP.NET WebApi Controller
我可以收集一些变量并列出并放入JSON中,如果HTTP Get调用成功,该变量将返回给客户端吗?
例如:
我有这个控制器,它必须返回帐户列表和更多的值:
public class BankAccountController : ApiController
{
[Authorize]
[Route("/accounts")]
public IHttpActionResult GetAccounts()
{
List<Account> userAccounts = new List<Account>{
new Account {
AccountNumber = 1,
Available = 2346.220m,
Balance = 3219.12m,
Currency = "euro",
InterestRate = 1,
Name = "Current account",
Type = ""},
new Account {
AccountNumber = 2,
Available = 12346.220m,
Balance = 32219.12m,
Currency = "euro",
InterestRate = 3,
Name = "Saving account",
Type = ""},
new Account {
AccountNumber = 3,
Available = 346.220m,
Balance = 219.12m,
Currency = "euro",
InterestRate = 3,
Name = "Current account",
Type = ""},
new Account {
AccountNumber = 4,
Available = 37846.220m,
Balance = 21943.12m,
Currency = "euro",
InterestRate = 3,
Name = "Saving account",
Type = ""},
new Account {
AccountNumber = 5,
Available = 137846.220m,
Balance = 21943.12m,
Currency = "euro",
InterestRate = 3,
Name = "Saving account",
Type = ""},
new Account {
AccountNumber = 6,
Available = 7846.220m,
Balance = 21943.12m,
Currency = "euro",
InterestRate = 3,
Name = "Current account",
Type = ""}
};
var currentAccountsTotal = userAccounts.Count();
string currentsAccountTotalCurrency = "something";
string savingsAccountTotalCurrency = "something";
decimal savingsAccountsTotal = userAccounts.Where(a => a.Name == "Saving account").Select(b => b.Balance).Sum();
return ?;
}
我可以将userAccounts列表,currentAccountsTotal,currentsAccountTotalCurrency和SavingsAccountsTotal放入将返回到客户端的JSON中吗?
我有呼叫规范,它看起来像这样:在200个代码上,我将JSON中提到的所有内容返回给客户端。
在这种情况下,我应该把什么作为返回值?
您需要了解的内容:开箱即用,webapi支持内容协商的概念。
什么是内容协商? 内容协商是选择最佳表示形式(JSON,XML等)的过程。
如何在WebAPI中完成? 基本上,它正在读取accept标头。
例:
Accept: application/xml
如果webapi找到该请求的任何格式化程序,它将根据用户请求格式化响应。
您可以添加或删除格式器,例如,如果要始终使用json,则应删除xml格式器,如下所示:
config.Formatters.Remove(config.Formatters.XmlFormatter);
如果需要,您还可以创建自己的格式化程序,并将其添加到配置中。
在代码中,您只需要返回对象或Ok()即可,具体取决于您将什么用作返回类型。
在您的情况下,我们可以使用匿名对象,也可以请求自己的DTO来表示您的响应,该响应将这三个对象放在一起。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.