MVC .NET Core Web API XML 或 JSON

2023-12-20

我想创建一个以 XML 或 JSON 形式返回数据的 Web 应用程序,我该如何执行此操作?

该模型:

namespace ReturningJSONandXML.Models
{
    public class SomeImportantInformation
    {
        public int ID { get; set; }
        public string Information { get; set; }
    }
}

控制器:

namespace ReturningJSONandXML.Controllers
{
    public class GetInfoController : Controller
    {
        // GET: /<controller>/
        public List<SomeImportantInformation> Get()
        {
            List<SomeImportantInformation> ImportantInfo = new List<SomeImportantInformation>();
            ImportantInfo.Add(new SomeImportantInformation { ID = 0, Information = "Awesome info" });
            ImportantInfo.Add(new SomeImportantInformation { ID = 1, Information = "Some other interesting info" });
            return ImportantInfo;
        }
    }
}

我想返回 XML 和 JSON 文件...

我应该在这里使用哪些最佳实践?


框架会自动为您处理这个问题,这样您就不必重新发明轮子。答案引用如下。

但为了更简单:除非您指定Acceptheader,API 会将响应序列化为 JSON。例如,如果您指定'application/xml'它将返回 XML。

正如 MSDN 所说:

内容协商(conneg简称)发生在客户端 指定一个接受 标头 https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html。这 ASP.NET Core MVC 使用的默认格式是 JSON。内容协商 是由ObjectResult。它也内置于状态代码中 从辅助方法返回的特定操作结果(它们是 全部基于ObjectResult)。您还可以返回模型类型(a 您定义为数据传输类型的类)和框架 会自动将其包装在ObjectResult为你。

...

Content 谈判仅当发生Accept出现标题 在请求中。当请求包含accept标头时, 框架将枚举接受标头中的媒体类型 偏好顺序,并会尝试找到一个可以生成 以接受标头指定的格式之一进行响应。以防万一 没有找到可以满足客户端请求的格式化程序, 框架将尝试找到第一个可以生成 响应(除非开发人员已配置该选项MvcOptions返回 406 Not Acceptable 代替)。如果请求 指定了XML,但是XML格式化程序还没有配置,那么 将使用 JSON 格式化程序。更一般地说,如果没有格式化程序 配置为可以提供请求的格式,然后是第一个 使用可以格式化对象的格式化程序。如果没有给出标题, 第一个可以处理要返回的对象的格式化程序将是 用于序列化响应。在这种情况下,没有任何 正在进行协商 - 服务器正在确定它的格式 将使用。

来自 MSDN——当前版本 https://learn.microsoft.com/en-us/aspnet/core/mvc/models/formatting and 报价时的版本 https://github.com/dotnet/AspNetCore.Docs/blob/b2cdf7ff05b4e0449a797c122eb08fb55a18c5b8/aspnetcore/web-api/advanced/formatting.md.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC .NET Core Web API XML 或 JSON 的相关文章

随机推荐

  • 查找所有应用程序文件夹并在 Inno Setup 中安装文件

    这是一个类似的问题找到应用程序的路径 并将文件复制到 Inno Setup 中的该目录 https stackoverflow com questions 46282559 我想将文件安装到 Inno Setup 中用户的 MATLAB 文
  • 如何解读uops.info?

    我查了一下说明在 uops info 上尝试找出 1 延迟是多少 以及 2 我可以执行多少个并发负载 我在解释结果时遇到困难 下面的屏幕截图 上面也有链接 What do the different variants of the inst
  • 一旦使用pthread满足条件,for循环就不会终止

    当我发现 for 循环没有终止时 我正在编写一段多线程代码 起始代码大致是这样的 for int i V 1 tid i gt 0 i NTHREADS stuff V 和 NTHREADS 是常量 tid 是使用传递的线程 IDpthre
  • Jupyter:在不同的单元格中重新绘制

    我想做这样的事情 import matplotlib pyplot as plt matplotlib inline fig1 plt figure 1 plt plot 1 2 3 5 2 4 plt show 在一个单元格中 然后在另一
  • Swift 3 和 iOS 10 错误内存泄漏错误

    当与 iOS 10 和 Swift 3 一起使用时 Xcode 8 中似乎存在 错误的 内存泄漏错误 以下代码报告 Instruments 和 Xcode 8 内存调试器中的内存泄漏 class SomeClass NSObject var
  • Python将文本文件转换为字典

    我正在编写一个拼写检查函数 并且我有一个如下所示的文本文件 teh the cta cat dgo dog dya day frmo from memeber member 错误的拼写位于左侧 这将是我的密钥 正确的拼写位于右侧 我的值 d
  • 如何在 RxJava 中的动态列表上创建观察者?

    我需要在不断变化的数组上创建一个观察者 添加元素 我正在使用 Observable from Iterable 但它似乎在 ArrayList 上创建了 Observable 就像创建时一样 我需要通知观察者并在每次 ArrayList 添
  • 使用 ConcMarkSweepGC 的连续 CMS 收集

    在 Linux 上使用以下 JVM 选项启动 Tomcat 2cpu 4g RAM 800M ehcache 元素 Xmn512m Xmx2g Xms2g XX UseConcMarkSweepGC Xss128k XX PermSize
  • 我可以指定 MSBuild 标记的输出路径吗?

    是否可以为以下文件的输出指定不同的文件夹
  • 加入线程时处理异常的最佳方法

    出于某种原因 我对以下内容感到困惑 假设我有Thread A that 绝对地需要执行后Thread B已完成其处理 做到这一点的一种方法是Thread A加盟Thread B 简单的例子 public class MainThread p
  • android:使用默认视频播放器

    我有一个播放视频文件的应用程序 我一直在使用代码Videoview并开始Videoview手动播放视频文件 但是 我只是想知道我是否可以使用 android 的默认媒体播放器或视频播放器 而不是创建或使用VideoView播放文件 如果问题
  • 正确使用 IdUDPClient.ReceiveBuffer

    感谢您的帮助 我正在将旧版本的 Delphi 转换为 XE5 但我遇到了 Indy 组件的问题 需要使用IdUDPClient ReceiveBuffer 这是我的代码 while not Terminated do begin try l
  • 在整个站点使用 SSL [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我考虑的是为整个网站使用 SSL 而不是只选择几个页面进行 HTTPS 访问 这样做会有什么缺点 我希望允许社交服务登录 例如 Facebook
  • 从 Python 发送 HTTP POST 请求(尝试从 PHP 转换)

    我正在尝试将此代码片段从 PHP 转换为 Python 编程新手 但发现这样做很困难 我尝试转换的 PHP 如下 fp fsockopen whmcsurl 80 errno errstr 5 if fp querystring forea
  • 如何通过 __getattr__ 将参数传递给函数

    考虑以下代码示例 python 2 7 class Parent def init self child self child child def getattr self attr print Calling getattr attr i
  • ViewPager 上的左右箭头指示器

    我想在 ViewPager 上显示左右箭头 以指示滑动 我在 ViewPager 元素上添加了两个 ImageButton 但这些区域随后阻止 ViewPager 触发 滑动 我还希望按下这些箭头来触发片段相应地改变 简而言之 ImageB
  • 对具有 DI 依赖项的类进行玩笑模拟

    各种 Jest 文档显示了 自动 模拟 手动 模拟或ES6级 https jestjs io docs en es6 class mocks html模拟 在构造函数中实例化依赖项 但我想使用 DI IOC 并将依赖项注入到 ctor 中
  • 在资源中移动 .lproj 文件

    我正在尝试开始对一个项目进行本地化 并且我已经有了 Localized strings 的英文版本 我现在尝试将法语添加到该文件中 这将创建一个 fr lproj 文件夹 正如我所期望的那样 但是 它将它放在我的项目根目录中 我希望它位于我
  • 如何在 Firefox 中从剪贴板获取数据

    我想在元素上触发 onpaste 事件以检索剪贴板中的数据 我想检查剪贴板中是否存在图像并将其上传到服务器中 它在 Chrome 上完美运行 textarea 0 onpaste function event var items event
  • MVC .NET Core Web API XML 或 JSON

    我想创建一个以 XML 或 JSON 形式返回数据的 Web 应用程序 我该如何执行此操作 该模型 namespace ReturningJSONandXML Models public class SomeImportantInforma