我可以收集少量变量并列出并将其放入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中提到的所有内容都返回给客户端。
在这种情况下,我应该将什么作为返回值?
答案 0 :(得分:2)
您需要了解的内容: 开箱即用,webapi支持内容协商的概念。
什么是内容协商? 内容协商是选择最佳表示(JSON,XML等)的过程。
如何在WebAPI中完成? 基本上,它正在读取接受标题。
示例:
Accept: application/xml
如果webapi找到该请求的任何格式化程序,它将按用户请求格式化响应。
你可以添加或删除格式化程序,例如,如果你想要json,我们应该删除xml格式化程序,如下所示:
config.Formatters.Remove(config.Formatters.XmlFormatter);
如果需要,您还可以创建自己的格式化程序并将其添加到配置中。
在代码中,您只需要返回您的对象或Ok(),具体取决于您使用什么作为返回类型。
在您的情况下,我们可以使用匿名对象,或者您可以请求您自己的DTO来表示您的响应,其中包括三个对象。