返回JSON作为ASP.NET WebApi Controller中HTTP Get的响应

时间:2015-02-26 09:59:36

标签: c# asp.net json asp.net-web-api

我可以收集少量变量并列出并将其放入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中提到的所有内容都返回给客户端。

enter image description here

在这种情况下,我应该将什么作为返回值?

1 个答案:

答案 0 :(得分:2)

您需要了解的内容: 开箱即用,webapi支持内容协商的概念。

什么是内容协商? 内容协商是选择最佳表示(JSON,XML等)的过程。

如何在WebAPI中完成? 基本上,它正在读取接受标题。

示例:

Accept: application/xml

如果webapi找到该请求的任何格式化程序,它将按用户请求格式化响应。

你可以添加或删除格式化程序,例如,如果你想要json,我们应该删除xml格式化程序,如下所示:

config.Formatters.Remove(config.Formatters.XmlFormatter);

如果需要,您还可以创建自己的格式化程序并将其添加到配置中。

在代码中,您只需要返回您的对象或Ok(),具体取决于您使用什么作为返回类型。

在您的情况下,我们可以使用匿名对象,或者您可以请求您自己的DTO来表示您的响应,其中包括三个对象。