繁体   English   中英

返回JSON作为ASP.NET WebApi控制器中HTTP Get的响应

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM