我们很高兴地宣布,ASP.NET Core OData 9 已正式发布,并在 NuGet 上提供:
此版本的主要亮点是将 OData .NET 依赖项更新到 8.x 主版本。 通过更新依赖项,我们能够利用 Microsoft.OData.Core 8.x 和 Microsoft.OData.Edm 8.x 版本中引入的改进和新功能。
ASP.NET Core OData 9 版本将仅支持 .NET 8 或更高版本。
OData .NET 8 官方发布公告解决了该版本中引入的主要更改。建议阅读这篇文章以熟悉这些变化。
在本文中,我们将探讨其中一些更改如何影响 ASP.NET Core OData 库,以及如何在可能的情况下切换旧行为。
请求和响应负载中的字符编码
在 OData .NET 8 中,我们引入了一个新的 JSON 编写器,它在后台使用 .NET Utf8JsonWriter 来编写请求和响应有效负载。新的 JSON 编写器速度明显更快,并且是 ASP.NET Core OData 9 中的默认编写器。
您可能会观察到输出负载上的字符编码存在差异。我们将在以下各节中介绍这些差异。
编码的字符子集
在其默认配置中,新的 JSON 编写器不会像旧版 (OData .NET 7) 那样对大量字符进行编码。
默认情况下,旧版 JSON 编写器对所有整数值小于 32 且大于 127 的字符进行编码,基本上都是非 ASCII 字符。这计算出大约 65440 个字符!可以通过将 option 传递给默认的 JSON 编写器工厂构造函数来覆盖旧版 JSON 编写器的默认配置。使用这种替代配置,将对大大减少的字符子集进行编码。ODataStringEscapeOption.EscapeOnlyControls
新的 JSON 编写器使用默认情况下配置了 encoder 选项的基础。编码的结果字符集要小得多。Utf8JsonWriter
JavaScriptEncoder.UnsafeRelaxedJsonEscaping
下面是一个插图 – 以 OData 服务的代码示例形式,演示了使用新的 JSON 编写器时输出有效负载的外观:
// Model
namespace Ver900Sample.Models
{
public class Order
{
public int Id { get; set; }
public decimal Amount { get; set; }
public string Note { get; set; }
}
}
// Controller
using Microsoft.AspNetCore.OData.Query;
using Microsoft.AspNetCore.OData.Results;
using Microsoft.AspNetCore.OData.Routing.Controllers;
using Ver900Sample.Models;
namespace Ver900Sample.Controllers
{
public class OrdersController : ODataController
{
private static readonly List<Order> orders = new List<Order>
{
new Order { Id = 1, Amount = 130m, Note = "a - z, α - Ω" },
new Order { Id = 2, Amount = 170.50m, Note = "
标签:Core,ASP,OData,options,JSON,编写,NET,Microsoft
From: https://www.cnblogs.com/yswenli/p/18453938