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 的相关文章

  • 循环遍历 C 结构中的元素以提取单个元素的值和数据类型

    我有一个要求 我有一个 C 语言的大结构 由大约 30 多个不同数据类型的不同元素组成 typedef struct type1 element1 type2 element2 type3 element3 type2 element4 1
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 解析 XML 标签不匹配时出错

  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • 如何在没有 Visual Studio 和 docker compose 的情况下使用 docker 复制 csproj 文件?

    我刚刚使用 Visual Studio 15 8 8 启动了一个 NET Core 项目 2 1 的新解决方案 通过将docker compose文件设置为启动项目即可运行和调试 有用 从逻辑上讲 我应该能够使用简单的命令行语句构建 doc
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我
  • 如何使用 JSON_TABLE 从 Oracle JSON 列获取键值作为结果集

    我用谷歌搜索了很多 似乎无法找到适合我的简单用例的简单解决方案 我在 Oracle 12C 数据库中有一个 json 列 当然实际上是一个带有 json 约束的 varchar 在该列中我存储了这样的 Map 表示 a 9 0847 b 8
  • 如何在 C 中将 char 连接到 char* ?

    我怎样才能前置char c to char myChar 我有c值为 A and myChar值为 LL 我怎样才能前置c to myChar使 ALL 这应该有效 include

随机推荐

  • 查找所有应用程序文件夹并在 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