我想创建一个以 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 文件...
我应该在这里使用哪些最佳实践?
框架会自动为您处理这个问题,这样您就不必重新发明轮子。答案引用如下。
但为了更简单:除非您指定Accept
header,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(使用前将#替换为@)